Урок 37. Практикум 8: Представления и маршруты DRF
⚡ Кратко: Практикум 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 для ViewSetListCreateAPIView— GET-список + POST-созданиеRetrieveUpdateDestroyAPIView— GET-деталь + PUT/PATCH + DELETEget_serializer_class()— разные сериализаторы для GET и POST/PUTDjangoFilterBackend— фильтрация через 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
🎯 Что изучать дальше
- → Урок 38: Пагинация, глобальная пагинация, логирование
- DRF:
PageNumberPagination,CursorPagination - DRF:
SearchFilter,OrderingFilter - DRF: Permissions —
IsAuthenticated,IsAdminUser