Урок 37. Практикум 8: Представления и маршруты DRF

📁 Блок: DRF ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#drf #viewsets #generics #routers #filter_backends #практикум

⚡ Кратко: Практикум 8 — Представления и маршруты DRF

20+ практических задач на создание представлений (ViewSets и Generic Views) и URL-маршрутов для 8 моделей интернет-магазина. Два паттерна: ModelViewSet + DefaultRouter для простых CRUD-моделей и ListCreateAPIView + RetrieveUpdateDestroyAPIView для моделей с разными сериализаторами. Финал — добавление filter_backends с DjangoFilterBackend.

  • Задачи 1–2, 5: Category, Supplier, Address — ModelViewSet + DefaultRouter
  • Задачи 3–4, 6–8: Product, ProductDetail, Customer, Order, OrderItem — Generic Views + ручные URL
  • Задача 9: Фильтрация через DjangoFilterBackend для Product и Customer

Топ-3 ошибки: 1) Забыть django_filters в INSTALLED_APPS при использовании DjangoFilterBackend. 2) Не вызвать .as_view() при ручной регистрации Generic Views в urlpatterns. 3) Спутать router.register() — первый аргумент это URL-префикс (строка), второй — класс ViewSet.

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

Урок 37 — практикум 8 по Django REST Framework. Задачи взяты из лекции «Django Practicum 8». Цель — закрепить создание представлений и URL-маршрутов для всех восьми моделей интернет-магазина, а также научиться добавлять фильтрацию через filter_backends.

Новый теоретический материал не вводится — только практика. Если нужно освежить теорию представлений и маршрутизации — загляни в Урок 36.

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

  • ModelViewSet — автоматический полный CRUD за 3 строки кода
  • DefaultRouter — автоматическая генерация всех URL для ViewSet
  • ListCreateAPIView — GET-список + POST-создание
  • RetrieveUpdateDestroyAPIView — GET-деталь + PUT/PATCH + DELETE
  • get_serializer_class() — разные сериализаторы для GET и POST/PUT
  • DjangoFilterBackend — фильтрация через query-параметры

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

  • ← Урок 36: Основы DRF часть 4
  • DRF: ModelSerializer, сериализаторы для чтения и записи (Урок 34)
  • Django: urls.py, path(), include()
  • DRF: APIView, HTTP-методы, Response
  • Модели store: Category, Supplier, Product, ProductDetail, Address, Customer, Order, OrderItem

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