📝 Практикум 8: задачи

20 задач: Category (1.1–1.2) · Supplier (2.1–2.2) · Product (3.1–3.3) · ProductDetail (4.1–4.3) · Address (5.1–5.2) · Customer (6.1–6.3) · Order (7.1–7.3) · OrderItem (8.1–8.3) · Filter (9.1–9.2)

⚡ Все задачи — кратко

Контекст: Создаём представления (views.py) и URL-маршруты (urls.py) для 8 моделей интернет-магазина. Сериализаторы уже готовы из Практикума 7.

  1. 1.1: CategoryViewSet(ModelViewSet) — CRUD для Category
  2. 1.2: Маршруты для CategoryViewSet через DefaultRouter
  3. 2.1: SupplierViewSet(ModelViewSet) — CRUD для Supplier
  4. 2.2: Маршруты для SupplierViewSet через DefaultRouter
  5. 3.1: ProductListCreateView(ListCreateAPIView) — список + создание, два сериализатора
  6. 3.2: ProductDetailUpdateDeleteView(RetrieveUpdateDestroyAPIView) — деталь + обновление, два сериализатора
  7. 3.3: Маршруты для ProductListCreateView и ProductDetailUpdateDeleteView
  8. 4.1: ProductDetailListCreateView — для ProductDetail
  9. 4.2: ProductDetailDetailUpdateDeleteView — для ProductDetail
  10. 4.3: Маршруты для ProductDetail
  11. 5.1: AddressViewSet(ModelViewSet) — CRUD для Address
  12. 5.2: Маршруты для AddressViewSet через DefaultRouter
  13. 6.1: CustomerListCreateView — два сериализатора
  14. 6.2: CustomerDetailUpdateDeleteView — два сериализатора
  15. 6.3: Маршруты для Customer
  16. 7.1: OrderListCreateView — два сериализатора
  17. 7.2: OrderDetailUpdateDeleteView — два сериализатора
  18. 7.3: Маршруты для Order
  19. 8.1–8.3: Аналогично для OrderItem
  20. 9.1: filter_backends для Product по category и price
  21. 9.2: filter_backends для Customer по first_name и last_name
Задача практикума: Создайте представления для моделей, используя подходящие Class Views. Каждое представление должно быть реализовано с полноценным CRUD. Вам нужно будет реализовать классы представлений и их настройки.

Задание 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.

→ Посмотреть решение

← К оглавлению урока    Решения →