Урок 39. Summary session 7

📁 Блок: DRF ⏱️ Время изучения: ~45 мин 🎯 Сложность: Средняя
#summary #drf #genericviews #viewsets #pagination #logging #повторение

⚡ Кратко: суть урока

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

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

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