Урок 38. Пагинация и логирование в DRF/Django
⚡ Кратко: Пагинация и логирование
Урок охватывает два блока: настройку пагинации в DRF через атрибут pagination_class (три встроенных класса) и глобальную конфигурацию логирования Django (словарь LOGGING, handlers, loggers).
- PageNumberPagination: навигация по номерам страниц (
?page=2,?page_size=5) - LimitOffsetPagination: смещение + лимит (
?limit=5&offset=10) - CursorPagination: зашифрованный курсор — безопасная навигация без «засветки» параметров
- Глобальная пагинация:
DEFAULT_PAGINATION_CLASS+PAGE_SIZEвREST_FRAMEWORK - LOGGING: словарь с
handlers(StreamHandler, FileHandler) иloggers(django.db.backends)
Топ-3 ошибки: 1) Задать глобальную CursorPagination без кастомного класса — падает, если в модели нет поля created_at. 2) Указать disable_existing_loggers: True — отключатся все Django-логгеры. 3) Не создать директорию logs/ вручную перед стартом — FileHandler упадёт с FileNotFoundError.
📖 О чём этот урок
Урок 38 посвящён двум ключевым аспектам боевого Django-приложения: управлению большими наборами данных через пагинацию и наблюдаемости через логирование.
Первая часть — атрибут pagination_class в DRF: три встроенных класса пагинации, их назначение, параметры и примеры запросов. Вторая часть — глобальная настройка пагинации через REST_FRAMEWORK в settings.py, в том числе кастомные классы для CursorPagination. Третья часть — подключение системы логирования Django: словарь LOGGING, обработчики (консоль, файл), логгер SQL-запросов django.db.backends.
Что изучим
- Атрибут
pagination_class— назначение и механизм - PageNumberPagination — навигация по страницам
- LimitOffsetPagination — смещение и лимит
- CursorPagination — курсорная (безопасная) пагинация
- Глобальная настройка через
DEFAULT_PAGINATION_CLASS - Кастомный класс пагинации в
pagination.py - Конфигурация
LOGGINGвsettings.py - Handlers: StreamHandler (консоль), FileHandler (файл)
- Logger
django.db.backendsдля SQL-запросов
📚 Что повторить перед изучением
- ← Урок 37: Практикум 8 — ViewSets, Generic Views, Router
- DRF Generic Views: ListAPIView (урок 33)
- REST_FRAMEWORK конфигурация в settings.py (уроки 26, 29)
- Django settings.py: структура и базовые переменные (урок 13)
- Python стандартный модуль
logging— базовые концепции
🎯 Что изучать дальше
- → Урок 39: Summary session 7 — повторение DRF-блока
- Аутентификация в DRF: SessionAuthentication, TokenAuthentication, JWT (урок 40)
- Permissions: IsAuthenticated, IsAdminUser, кастомные права доступа
- Расширенное логирование: RotatingFileHandler, TimedRotatingFileHandler, Sentry
- Мониторинг производительности SQL-запросов через Django Debug Toolbar