এই টিউটোরিয়ালে, আমরা Django REST Framework-এর ক্লাস-ভিত্তিক ভিউ ব্যবহার করে একটি টাস্ক ম্যানেজমেন্ট API তৈরি করব। আমাদের API ব্যবহারকারীদের কাজগুলি তৈরি করতে, পড়তে, আপডেট করতে এবং মুছতে অনুমতি দেবে৷
সেটআপ:
আমরা শুরু করার আগে, নিশ্চিত করুন যে আপনি জ্যাঙ্গো এবং জ্যাঙ্গো REST ফ্রেমওয়ার্ক ইনস্টল করেছেন। আপনি তাদের পিপ এর মাধ্যমে ইনস্টল করতে পারেন:
pip install django djangorestframework
Bashএকটি নতুন জ্যাঙ্গো প্রজেক্ট এবং অ্যাপ তৈরি করুন
django-admin startproject task_manager_project
cd task_manager_project
django-admin startapp tasks
Bashধাপ 1: মডেল সংজ্ঞায়িত করুন:
আমাদের অ্যাপ্লিকেশনের tasks
মডেল models.py
ফাইল তৈরি করুন :
# tasks/models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Task(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
due_date = models.DateField()
completed = models.BooleanField(default=False)
Bashমাইগ্রেশন চালান:
python manage.py makemigrations
python manage.py migrate
Bashধাপ 2: সিরিয়ালাইজার:
এরপর, আমরা জ্যাঙ্গো মডেলগুলিকে JSON-এ রূপান্তর করতে সিরিয়ালাইজার তৈরি করব এবং এর বিপরীতে। serializers.py
অ্যাপে একটি ফাইল তৈরি করুন tasks
:
# tasks/serializers.py
from rest_framework import serializers
from .models import Task, Category
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = '__all__'
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = '__all__'
Bashধাপ 3: ভিউ:
এখন, CRUD অপারেশন পরিচালনার জন্য আমাদের ক্লাস-ভিত্তিক দৃষ্টিভঙ্গি তৈরি করা যাক। views.py
অ্যাপে একটি ফাইল তৈরি করুন tasks
:
# tasks/views.py
from rest_framework import generics
from .models import Task, Category
from .serializers import TaskSerializer, CategorySerializer
class TaskListCreateAPIView(generics.ListCreateAPIView):
queryset = Task.objects.all()
serializer_class = TaskSerializer
class TaskRetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Task.objects.all()
serializer_class = TaskSerializer
class CategoryListCreateAPIView(generics.ListCreateAPIView):
queryset = Category.objects.all()
serializer_class = CategorySerializer
class CategoryRetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Category.objects.all()
serializer_class = CategorySerializer
Bashধাপ 4: URL রাউটিং:
পরিশেষে, আমাদের দৃষ্টিভঙ্গির জন্য ইউআরএল রুট সংজ্ঞায়িত করা যাক। urls.py
অ্যাপে আপডেট করুন tasks
:
# tasks/urls.py
from django.urls import path
from .views import TaskListCreateAPIView, TaskRetrieveUpdateDestroyAPIView, \
CategoryListCreateAPIView, CategoryRetrieveUpdateDestroyAPIView
urlpatterns = [
path('tasks/', TaskListCreateAPIView.as_view(), name='task-list-create'),
path('tasks/<int:pk>/', TaskRetrieveUpdateDestroyAPIView.as_view(), name='task-retrieve-update-destroy'),
path('categories/', CategoryListCreateAPIView.as_view(), name='category-list-create'),
path('categories/<int:pk>/', CategoryRetrieveUpdateDestroyAPIView.as_view(), name='category-retrieve-update-destroy'),
]
Bashsettings.py
INSTALLED_APPS = [
'rest_framework',
'tasks',
]
Bashproject urls
from django.urls import path, include
urlpatterns = [
path('api/', include('tasks.urls')),
]
Bash
ধাপ 5: পরীক্ষা:
সার্ভার চালু করুন:
python manage.py runserver
BashAPI END POINT
# Task API Documentation
This API provides endpoints for managing tasks.
## Endpoints
1. **GET all tasks:**
- URL: `http://127.0.0.1:8000/api/tasks/`
- Method: GET
- No additional data needed.
2. **GET a specific task by ID:**
- URL: `http://127.0.0.1:8000/api/tasks/:id/`
- Replace `:id` with the actual ID you want to retrieve.
- Method: GET
- No additional data needed.
3. **Create a new task:**
- URL: `http://127.0.0.1:8000/api/tasks/`
- Method: POST
- Body: JSON with the data for the new task.
```json
{
"title": "New Task",
"description": "This is a new task",
"category": 1,
"due_date": "2024-02-24",
"completed": false
}
```
4. **Update a specific task by ID:**
- URL: `http://127.0.0.1:8000/api/tasks/:id/`
- Replace `:id` with the actual ID you want to update.
- Method: PUT
- Body: JSON with the updated data for the task.
```json
{
"title": "Updated Task",
"description": "This is the updated task",
"category": 2,
"due_date": "2024-02-25",
"completed": true
}
```
5. **DELETE a specific task by ID:**
- URL: `http://127.0.0.1:8000/api/tasks/:id/`
- Replace `:id` with the actual ID you want to delete.
- Method: DELETE
- No additional data needed.
6. **GET tasks by category ID:**
- URL: `http://127.0.0.1:8000/api/categories/:id/tasks/`
- Replace `:id` with the category ID.
- Method: GET
- No additional data needed.
7. **GET tasks by due date range:**
- URL: `http://127.0.0.1:8000/api/tasks/?due_date__gte=:start_date&due_date__lte=:end_date`
- Replace `:start_date` and `:end_date` with the start and end dates respectively (in YYYY-MM-DD format).
- Method: GET
- No additional data needed.
Bash