Урок 39. Summary session 7
⚡ Кратко: суть урока
Summary session 7 — итоговое повторение DRF-блока (Уроки 33–38).
- GenericAPIView — queryset, serializer_class, get_queryset(), get_object(), get_serializer_class(), filter_backends, pagination_class.
- Generic Views — ListAPIView, CreateAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView и их комбинации. Переопределение list/create/retrieve/update/destroy.
- lookup_field / lookup_url_kwarg — поиск объекта по произвольному полю, кастомные URL-параметры.
- get_object() / get_serializer_context() — фильтрация при поиске, передача контекста в сериализатор.
- ViewSets — ModelViewSet, ReadOnlyModelViewSet, GenericViewSet + миксины; @action.
- Router — DefaultRouter vs SimpleRouter, автоматическая маршрутизация.
- filter_backends — DjangoFilterBackend, SearchFilter, OrderingFilter.
- Soft Deletion — is_deleted, deleted_at, переопределение delete(), SoftDeleteManager.
- Ленивая загрузка / Транзакции — select_related, prefetch_related; transaction.atomic.
- Пагинация — PageNumberPagination, LimitOffsetPagination, CursorPagination; глобальная настройка.
- Логирование запросов в БД — LOGGING с django.db.backends.
Цель: закрепить весь DRF-блок перед изучением аутентификации и разрешений.
📖 О чём этот урок
Этот урок — итоговое повторение седьмого блока курса. Мы кратко пройдёмся по всем темам уроков 33–38: GenericAPIView и Generic Views, ViewSets и Router, фильтрация, пагинация, мягкое удаление, ленивая загрузка, транзакции, логирование SQL-запросов.
Что повторим
- GenericAPIView: атрибуты queryset и serializer_class
- Методы get_queryset(), get_object(), get_serializer_class(), get_serializer_context()
- lookup_field и lookup_url_kwarg
- Все 9 классов Generic Views и когда какой применять
- Кастомизация методов list/create/retrieve/update/destroy
- ViewSets: ModelViewSet, ReadOnlyModelViewSet, GenericViewSet
- Декоратор @action для кастомных методов
- Router: SimpleRouter vs DefaultRouter
- filter_backends: DjangoFilterBackend, SearchFilter, OrderingFilter
- Soft Deletion: is_deleted, SoftDeleteManager
- Ленивая загрузка и проблема N+1: select_related, prefetch_related
- Транзакции: transaction.atomic, on_commit, set_rollback
- Пагинация: три класса и глобальная настройка
- Логирование SQL-запросов через LOGGING
📚 Что повторить перед изучением
- Урок 33: Основы DRF ч.3 — GenericAPIView, Миксины, Generic Views
- Урок 34: Практикум DRF 3 — Generic Views в проекте
- Урок 36: Основы DRF ч.4 — ViewSets, Router, @action
- Урок 37: Практикум DRF 4 — ViewSets в проекте
- Урок 38: Фильтрация, поиск, сортировка, Soft Deletion, транзакции
- Урок 38: Пагинация и логирование DRF/Django