Какие основные компоненты Django REST Framework используются для создания REST API

Ответ

Django REST Framework (DRF) — это стандартный инструмент для создания REST API в Django. Его архитектура основана на трех ключевых компонентах:

  1. Serializers (serializers.ModelSerializer)

    • Задача: Преобразование сложных типов данных, таких как QuerySet'ы и экземпляры моделей Django, в нативные типы Python, которые затем легко преобразуются в JSON. Также выполняют обратную задачу — валидацию и преобразование входящих данных в объекты Django.
  2. Views / ViewSets (APIView, viewsets.ModelViewSet)

    • Задача: Обработка HTTP-запросов (GET, POST, PUT, DELETE) и реализация бизнес-логики эндпоинта. ModelViewSet автоматически предоставляет полный набор CRUD-операций (Create, Retrieve, Update, Delete) для указанной модели.
  3. Routers (routers.SimpleRouter, routers.DefaultRouter)

    • Задача: Автоматическое создание URL-маршрутов для ViewSet. Это избавляет от необходимости вручную прописывать URL для каждого действия (list, detail, create и т.д.).

Пример полного цикла:

# models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)

# serializers.py
from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title', 'author']

# views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

# urls.py
from rest_framework.routers import DefaultRouter
from .views import BookViewSet

router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urls

Этот код создает полноценный API-эндпоинт /books/ с поддержкой всех CRUD-операций.