Урок 43. Практикум 10: Auth, Permissions, Swagger

📁 Блок: Auth ⏱️ Время изучения: ~60 мин 🎯 Сложность: Продвинутая
#permissions #request.user #BasePermission #dumpdata #swagger #drf-yasg #практикум

⚡ Кратко: Практикум 10 — Auth, Permissions, Swagger

5 практических задач: извлечение пользователя из запроса, кастомные разрешения, пользовательские permissions в Meta, управление БД (dumpdata/loaddata) и настройка Swagger через drf-yasg.

  • Задание 1: perform_create + get_queryset — авто-привязка и фильтрация заказов по request.user
  • Задание 2: Кастомный класс IsCustomerOrReadOnly на основе BasePermission
  • Задание 3: Пользовательское разрешение can_view_statistics в Meta + эндпоинт статистики + группа в админке
  • Задание 4: dumpdata / loaddata — резервная копия и восстановление БД
  • Задание 5: drf-yasg — Swagger и ReDoc для документации API

Топ-3 ошибки: 1) Забыть вызвать makemigrations после добавления Meta.permissions. 2) Применить только has_permission без has_object_permission для object-level. 3) Путать заголовок Authorization: Token (DRF Token) с Bearer (JWT).

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

Урок 43 — практикум 10 по теме Auth и DRF в Django. Задачи взяты из лекции «Django Practicum 10». Новый теоретический материал не вводится — только практическое применение концепций, изученных в уроках 40–42.

Если нужно освежить теорию разрешений и сигналов — загляни в Урок 42.

Что закрепляем

  • perform_create() и get_queryset() — привязка и фильтрация по текущему пользователю
  • BasePermissionhas_permission() и has_object_permission()
  • Meta.permissions — пользовательские разрешения на уровне модели
  • has_perm() — проверка нестандартных разрешений в представлении
  • dumpdata / loaddata — резервная копия и восстановление базы данных
  • drf-yasg — автоматическая Swagger-документация для DRF API

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

  • ← Урок 42: Виды разрешений, сигналы
  • DRF: BasePermission, has_permission(), has_object_permission()
  • DRF: ModelViewSet, ListCreateAPIView, perform_create()
  • Django: Meta.permissions, user.has_perm(), группы и разрешения в Admin
  • Команды manage.py: makemigrations, migrate, dumpdata, loaddata

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

  • → Урок 44: JWT — логин и регистрация
  • JWT: кастомизация claims, Blacklist-приложение, ротация refresh-токенов
  • drf-spectacular — альтернатива drf-yasg с поддержкой OpenAPI 3.0
  • Django Guardian — объектные разрешения на уровне строки БД