Урок 29. Основы Django REST Framework: часть 2
⚡ Кратко: 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