📝 Практикум 8: задачи
⚡ Все задачи — кратко
Контекст: Создаём представления (views.py) и URL-маршруты (urls.py) для 8 моделей интернет-магазина. Сериализаторы уже готовы из Практикума 7.
- 1.1:
CategoryViewSet(ModelViewSet)— CRUD для Category - 1.2: Маршруты для CategoryViewSet через DefaultRouter
- 2.1:
SupplierViewSet(ModelViewSet)— CRUD для Supplier - 2.2: Маршруты для SupplierViewSet через DefaultRouter
- 3.1:
ProductListCreateView(ListCreateAPIView)— список + создание, два сериализатора - 3.2:
ProductDetailUpdateDeleteView(RetrieveUpdateDestroyAPIView)— деталь + обновление, два сериализатора - 3.3: Маршруты для ProductListCreateView и ProductDetailUpdateDeleteView
- 4.1:
ProductDetailListCreateView— для ProductDetail - 4.2:
ProductDetailDetailUpdateDeleteView— для ProductDetail - 4.3: Маршруты для ProductDetail
- 5.1:
AddressViewSet(ModelViewSet)— CRUD для Address - 5.2: Маршруты для AddressViewSet через DefaultRouter
- 6.1:
CustomerListCreateView— два сериализатора - 6.2:
CustomerDetailUpdateDeleteView— два сериализатора - 6.3: Маршруты для Customer
- 7.1:
OrderListCreateView— два сериализатора - 7.2:
OrderDetailUpdateDeleteView— два сериализатора - 7.3: Маршруты для Order
- 8.1–8.3: Аналогично для OrderItem
- 9.1:
filter_backendsдля Product по category и price - 9.2:
filter_backendsдля Customer по first_name и last_name
Задание 1: Представления и маршруты для модели Category
Задание 1.1 — Представление для CRUD операций
Создайте представление для модели Category, которое:
- Реализует все операции CRUD.
- Использует сериалайзер
CategorySerializer.
Файл: store/views.py
Задание 1.2 — Маршруты для модели Category
Добавьте маршруты для представления CategoryViewSet, используя DefaultRouter.
Файл: store/urls.py
Задание 2: Представления и маршруты для модели Supplier
Задание 2.1 — Представление для CRUD операций
Создайте представление для модели Supplier, которое:
- Реализует все операции CRUD.
- Использует сериалайзер
SupplierSerializer.
Задание 2.2 — Маршруты для модели Supplier
Добавьте маршруты для представления SupplierViewSet, используя DefaultRouter.
Задание 3: Представления и маршруты для модели Product
Задание 3.1 — Представление для получения списка и создания
Создайте представление для модели Product, которое:
- Позволяет получать список продуктов и создавать новые записи.
- Использует сериалайзер
ProductSerializerдля GET-запросов. - Использует сериалайзер
ProductCreateUpdateSerializerдля POST-запросов.
Задание 3.2 — Представление для получения, обновления и удаления
Создайте представление для модели Product, которое:
- Позволяет получать, обновлять и удалять записи продуктов.
- Использует сериалайзер
ProductSerializerдля GET-запросов. - Использует сериалайзер
ProductCreateUpdateSerializerдля PUT и DELETE-запросов.
Задание 3.3 — Маршруты для модели Product
Добавьте маршруты для представлений ProductListCreateView и ProductDetailUpdateDeleteView.
Задание 4: Представления и маршруты для модели ProductDetail
Задание 4.1 — Представление для получения списка и создания
Создайте представление для модели ProductDetail, которое:
- Позволяет получать список деталей продуктов и создавать новые записи.
- Использует сериалайзер
ProductDetailSerializerдля GET-запросов. - Использует сериалайзер
ProductDetailCreateUpdateSerializerдля POST-запросов.
Задание 4.2 — Представление для получения, обновления и удаления
Создайте представление для модели ProductDetail, которое:
- Позволяет получать, обновлять и удалять записи деталей продуктов.
- Использует сериалайзер
ProductDetailSerializerдля GET-запросов. - Использует сериалайзер
ProductDetailCreateUpdateSerializerдля PUT и DELETE-запросов.
Задание 4.3 — Маршруты для модели ProductDetail
Добавьте маршруты для представлений ProductDetailListCreateView и ProductDetailDetailUpdateDeleteView.
Задание 5: Представления и маршруты для модели Address
Задание 5.1 — Представление для CRUD операций
Создайте представление для модели Address, которое:
- Реализует все операции CRUD.
- Использует сериалайзер
AddressSerializer.
Задание 5.2 — Маршруты для модели Address
Добавьте маршруты для представления AddressViewSet, используя DefaultRouter.
Задание 6: Представления и маршруты для модели Customer
Задание 6.1 — Представление для получения списка и создания
Создайте представление для модели Customer, которое:
- Позволяет получать список клиентов и создавать новые записи.
- Использует сериалайзер
CustomerSerializerдля GET-запросов. - Использует сериалайзер
CustomerCreateUpdateSerializerдля POST-запросов.
Задание 6.2 — Представление для получения, обновления и удаления
Создайте представление для модели Customer, которое:
- Позволяет получать, обновлять и удалять записи клиентов.
- Использует сериалайзер
CustomerSerializerдля GET-запросов. - Использует сериалайзер
CustomerCreateUpdateSerializerдля PUT и DELETE-запросов.
Задание 6.3 — Маршруты для модели Customer
Добавьте маршруты для представлений CustomerListCreateView и CustomerDetailUpdateDeleteView.
Задание 7: Представления и маршруты для модели Order
Задание 7.1 — Представление для получения списка и создания
Создайте представление для модели Order, которое:
- Позволяет получать список заказов и создавать новые записи.
- Использует сериалайзер
OrderSerializerдля GET-запросов. - Использует сериалайзер
OrderCreateUpdateSerializerдля POST-запросов.
Задание 7.2 — Представление для получения, обновления и удаления
Создайте представление для модели Order, которое:
- Позволяет получать, обновлять и удалять записи заказов.
- Использует сериалайзер
OrderSerializerдля GET-запросов. - Использует сериалайзер
OrderCreateUpdateSerializerдля PUT и DELETE-запросов.
Задание 7.3 — Маршруты для модели Order
Добавьте маршруты для представлений OrderListCreateView и OrderDetailUpdateDeleteView.
Задание 8: Представления и маршруты для модели OrderItem
Задание 8.1 — Представление для получения списка и создания
Создайте представление для модели OrderItem, которое:
- Позволяет получать список элементов заказов и создавать новые записи.
- Использует сериалайзер
OrderItemSerializerдля GET-запросов. - Использует сериалайзер
OrderItemCreateUpdateSerializerдля POST-запросов.
Задание 8.2 — Представление для получения, обновления и удаления
Создайте представление для модели OrderItem, которое:
- Позволяет получать, обновлять и удалять записи элементов заказов.
- Использует сериалайзер
OrderItemSerializerдля GET-запросов. - Использует сериалайзер
OrderItemCreateUpdateSerializerдля PUT и DELETE-запросов.
Задание 8.3 — Маршруты для модели OrderItem
Добавьте маршруты для представлений OrderItemListCreateView и OrderItemDetailUpdateDeleteView.
Задание 9: Добавление filter_backends
Задание 9.1 — Настройка фильтрации для модели Product
Настройте фильтрацию для модели Product с использованием filter_backends. Добавьте возможность фильтрации по полям category и price.
Задание 9.2 — Настройка фильтрации для модели Customer
Настройте фильтрацию для модели Customer с использованием filter_backends. Добавьте возможность фильтрации по полям first_name и last_name.