دوره عملی REST API با Django REST Framework: پروژه کامل
امروزه، دنیای وب فراتر از وبسایتهای سنتی رفته است. اپلیکیشنهای موبایل (اندروید و iOS)، برنامههای دسکتاپ و اپلیکیشنهای تکصفحهای (SPAs) همگی نیاز دارند تا با یک سرور مرکزی صحبت کنند، دادهها را بخوانند و دادههای جدیدی ارسال کنند. زبان مشترک این ارتباط، API (Application Programming Interface) و محبوبترین استاندارد برای آن، REST (Representational State Transfer) است. برای توسعهدهندگان پایتون و جنگو، ابزاری قدرتمندتر، سریعتر و حرفهایتر از Django REST Framework (DRF) برای ساخت این APIها وجود ندارد. در این مقاله، به صورت پروژهمحور، اجزای یک REST API کامل با DRF را تشریح میکنیم.
چرا به Django REST Framework (DRF) نیاز داریم؟
خودِ جنگو میتواند JSON برگرداند، اما ساخت یک API کامل به صورت دستی، کاری طاقتفرسا و پر از تکرار است. شما باید به صورت دستی:
- دادههای مدلهای جنگو را به فرمت JSON تبدیل کنید (سریالایز کردن).
- دادههای JSON ورودی را اعتبارسنجی کرده و به آبجکتهای پایتون تبدیل کنید (دیسریالایز کردن).
- سیستمهای احراز هویت (Authentication) برای API مدیریت کنید.
- سطوح دسترسی (Permissions) را مدیریت کنید که چه کاربری به چه دادهای دسترسی دارد.
Django REST Framework (DRF) تمام این فرآیندها را اتوماتیک و استانداردسازی میکند. DRF یک جعبه ابزار کامل است که به شما اجازه میدهد با حداقل کد، APIهای امن، قابل توسعه و قدرتمندی بسازید.
اجزای اصلی یک پروژه API با DRF (پروژه مدیریت وظایف)
بیایید ساخت یک API ساده برای “مدیریت وظایف” (Todo App) را تصور کنیم. ما به چهار بخش کلیدی نیاز داریم:
۱. مدل (Model): ساختار داده
این همان مدل استاندارد جنگو است که ساختار داده ما را در دیتابیس تعریف میکند.
# models.py
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=200)
completed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
۲. سریالایزر (Serializer): مترجم داده
این جادوی DRF است. سریالایزر به DRF میگوید که چگونه آبجکت `Task` پایتون را به `JSON` تبدیل کند (برای ارسال به کلاینت) و چگونه `JSON` دریافتی از کلاینت را اعتبارسنجی کرده و به آبجکت `Task` تبدیل کند (برای ذخیره در دیتابیس). `ModelSerializer` این کار را به صورت خودکار بر اساس مدل انجام میدهد.
# serializers.py
from rest_framework import serializers
from .models import Task
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ['id', 'title', 'completed', 'created_at']
۳. ویو (ViewSet): منطق و عملیات
به جای نوشتن توابع جداگانه برای `list`, `create`, `retrieve`, `update`, `delete` (عملیات CRUD)، DRF مفهومی به نام ViewSet (مجموعه نما) را ارائه میدهد. `ModelViewSet` به طور خودکار تمام این ۵ عملیات را برای مدل ما فراهم میکند.
# views.py
from rest_framework import viewsets
from .models import Task
from .serializers import TaskSerializer
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all()
serializer_class = TaskSerializer
۴. روتر (Router): آدرسدهی خودکار
دیگر نیازی به تعریف دستی URLهای `GET`, `POST`, `PUT`, `DELETE` نداریم. روتر DRF با اتصال به ViewSet ما، به صورت خودکار تمام URLهای استاندارد RESTful را میسازد.
# urls.py
from rest_framework.routers import DefaultRouter
from .views import TaskViewSet
router = DefaultRouter()
router.register(r'tasks', TaskViewSet, basename='task')
urlpatterns = router.urls
نتیجه: یک API کامل در چند دقیقه
با همین چند خط کد، ما اکنون یک API کامل با قابلیتهای زیر داریم:
| متد HTTP | آدرس URL | عملیات |
|---|---|---|
| GET | /tasks/ | دریافت لیست تمام وظایف |
| POST | /tasks/ | ایجاد یک وظیفه جدید |
| GET | /tasks/<id>/ | دریافت جزئیات یک وظیفه خاص |
| PUT / PATCH | /tasks/<id>/ | بهروزرسانی کامل / جزئی یک وظیفه |
| DELETE | /tasks/<id>/ | حذف یک وظیفه |
علاوه بر این، DRF به صورت خودکار یک “API قابل مرور” (Browsable API) نیز در اختیار ما قرار میدهد که یک رابط کاربری وب زیبا برای تست کردن تمام این URLها مستقیماً از طریق مرورگر است.
جمعبندی
Django REST Framework یکی از بهترین مهارتهایی است که یک توسعهدهنده پایتون میتواند به رزومه خود اضافه کند. این فریمورک به شما امکان میدهد تا بکاند (Backend) قدرتمندی بسازید که میتواند به هر نوع کلاینتی (وب، موبایل و…) سرویسدهی کند. یادگیری DRF به صورت پروژهمحور، همانطور که در دورههای تخصصی Alborz Technical and Vocational School انجام میشود، به شما کمک میکند تا به سرعت از یک توسعهدهنده وب به یک “توسعهدهنده بکاند فول-استک” ارتقا پیدا کنید.
بکاند اپلیکیشنهای مدرن را بسازید!
با تسلط بر پایتون، جنگو و Django REST Framework، میتوانید APIهای حرفهای بسازید که اپلیکیشنهای موبایل و وبسایتهای مدرن را قدرت میبخشند.
- ✅ آموزش پایتون و جنگو از پایه
- ✅ ساخت عملی APIهای RESTful با DRF
- ✅ پیادهسازی احراز هویت (Token/JWT) و سطوح دسترسی
ثبتنام در دوره پایتون پیشرفته و DRF













