Каковы основные компоненты Django REST Framework (DRF)?

Ответ

Django REST Framework (DRF) построен на компонентной архитектуре, где каждый элемент отвечает за свою часть обработки API-запроса. Это обеспечивает гибкость и переиспользование кода.

Ключевые компоненты:

  1. Serializers — отвечают за преобразование сложных типов данных (например, QuerySet'ы и экземпляры моделей Django) в нативные типы Python, которые затем легко преобразуются в JSON. Также выполняют обратный процесс (десериализацию) и валидацию данных.

  2. Views и ViewSets — классы, которые обрабатывают HTTP-запросы и возвращают HTTP-ответы. ViewSets являются абстракцией над Views и объединяют логику для нескольких связанных представлений (например, для списка и для отдельного объекта) в одном классе.

  3. Routers — используются с ViewSets для автоматического создания URL-конфигурации. Это избавляет от необходимости вручную прописывать URL-пути для стандартных CRUD-операций.

  4. Authentication & Permissions — механизмы для определения личности пользователя, отправившего запрос, и проверки его прав на выполнение определенного действия.

  5. Filtering, Pagination, Throttling — инструменты для управления наборами данных: фильтрация по параметрам, разделение больших списков на страницы и ограничение частоты запросов от пользователей.

Пример связки компонентов:

# models.py
class Project(models.Model):
    name = models.CharField(max_length=100)

# serializers.py
class ProjectSerializer(serializers.ModelSerializer):
    class Meta:
        model = Project
        fields = ['id', 'name']

# views.py
class ProjectViewSet(viewsets.ModelViewSet):
    queryset = Project.objects.all()
    serializer_class = ProjectSerializer
    permission_classes = [permissions.IsAuthenticated]

# urls.py
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'projects', ProjectViewSet)
# Роутер автоматически создаст URL-ы для list, create, retrieve, update, destroy
urlpatterns = router.urls