Урок 29. Основы Django REST Framework: часть 2

📁 Блок: DRF ⏱️ Время изучения: ~75 мин 🎯 Сложность: Средняя
#drf #serializer #related-fields #class-based-views #apiview #generic-views #viewset

⚡ Кратко: DRF часть 2

Урок делится на три части: поля для связей между моделями в сериализаторах (StringRelatedField, SlugRelatedField, PrimaryKeyRelatedField + Many-to-Many), Class-Based Views с их иерархией (APIView → GenericAPIView + Mixins → Generic Views → ViewSets) и детальный разбор APIView с примерами CRUD.

  • StringRelatedField: показывает __str__() связанного объекта, только чтение
  • SlugRelatedField: работает по slug-полю — позволяет создавать/обновлять по слагу
  • PrimaryKeyRelatedField: работает по ID (primary key) — стандарт для FK и M2M
  • APIView: низкоуровневый CBV — методы get(), post(), put(), delete()
  • Generic Views: ListCreateAPIView, RetrieveUpdateDestroyAPIView — готовые CRUD-шаблоны
  • ModelViewSet: полный CRUD одним классом + Router автоматически генерирует URL

Топ-3 ошибки: 1) Использовать StringRelatedField при записи — он read-only. 2) Не указать queryset в PrimaryKeyRelatedField/SlugRelatedField. 3) Забыть .as_view() при регистрации APIView в urls.py.

📖 О чём этот урок

Урок 29 углубляет знания Django REST Framework. В первой части рассматриваются поля для работы со связями между моделями — три подхода сериализации ForeignKey и Many-to-Many отношений: по строковому представлению, по slug и по первичному ключу. Показана полная цепочка от моделей до HTTP-запросов.

Вторая часть посвящена Class-Based Views — объектно-ориентированному подходу к созданию представлений. Изучается вся иерархия от низкоуровневого APIView до высокоуровневых ViewSets. В третьей части детально разбирается APIView с полным CRUD-примером и маршрутизацией.

Что изучим

  • StringRelatedField — сериализация через __str__()
  • SlugRelatedField — сериализация и запись по slug-полю
  • PrimaryKeyRelatedField — сериализация и запись по ID
  • Many-to-Many с PrimaryKeyRelatedField (параметр many=True)
  • Иерархия Class-Based Views: APIView → GenericAPIView → Mixins → Generic Views → ViewSets
  • Преимущества CBV над FBV
  • APIView: методы get/post/put/patch/delete и as_view()
  • Полный CRUD-пример с APIView и маршрутизацией

📚 Что повторить перед изучением

  • ← Урок 28: Доп. практикум 5 — DRF мини-проект
  • Django REST Framework: основы — сериализаторы ModelSerializer, @api_view (урок 26)
  • Django ORM: ForeignKey, ManyToManyField, связанные запросы (уроки 16, 19)
  • HTTP-методы: GET, POST, PUT, PATCH, DELETE и статус-коды
  • ООП в Python: наследование классов, переопределение методов

🎯 Что изучать дальше

  • → Урок 30: Доп. практикум 6 — Agile мини-проект 2
  • GenericAPIView + Mixins — гибкие представления с минимальным кодом
  • Параметры query_params и фильтрация в представлениях
  • Пагинация в DRF: PageNumberPagination, LimitOffsetPagination
  • Аутентификация и права доступа в DRF