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

5 заданий: request.user (1) · кастомные permissions (2) · статистика (3) · дамп БД (4) · Swagger (5)

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

  1. Задание 1 (request.user): perform_create + get_queryset + маршруты
  2. Задание 2 (кастомные разрешения): IsCustomerOrReadOnly + применение к view
  3. Задание 3 (статистика): Meta.permissions + CanViewStatistics + эндпоинт + маршрут + миграции + группа в admin
  4. Задание 4 (дамп БД): dumpdata + удалить БД + loaddata
  5. Задание 5 (Swagger): pip install drf-yasg + INSTALLED_APPS + маршруты
Контекст практикума: Работаем с DRF-проектом интернет-магазина (models: Order, Customer, Product). Задачи взяты дословно из источника «Django Practicum 10».

Задание 1: Извлечение пользователя из объекта запроса

Задание 1 — Извлечение пользователя из объекта запроса

  1. Настройте автоматическое добавление клиента при оформлении заказа.
  2. Настройте извлечение пользователя для получения объектов, где он является владельцем в новом представлении.
  3. Обновите маршруты.

Файлы: store/views.py, store/urls.py

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

Задание 2: Создание кастомных классов разрешений

Задание 2.1 — Создайте кастомное разрешение IsCustomerOrReadOnly

  1. Создайте кастомное разрешение IsCustomerOrReadOnly.

Файл: store/permissions.py

Подсказка: Разрешение должно позволять просматривать объект всем пользователям, но редактировать — только владельцу (полю customer).

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

Задание 2.2 — Примените кастомное разрешение к представлениям

  1. Примените кастомное разрешение IsCustomerOrReadOnly к представлению для работы с конкретным заказом.

Файл: store/views.py

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

Задание 3: Добавление эндпоинта для статистики

Задание 3 — Добавление эндпоинта для статистики (Части 1 и 2)

  1. Определите пользовательское разрешение "can_view_statistics" для модели.
  2. Создайте кастомное разрешение для доступа к статистике.
  3. Создайте эндпоинт для статистики.
  4. Добавьте маршрут для статистики.
  5. Создайте и примените миграции.
  6. Создайте группу разрешений "Statistic" в админ панели и присвойте её первому админ пользователю:
    • Зайдите в админку Django.
    • Создайте группу разрешений "Statistic" с разрешением "Can view statistics".
    • Найдите пользователя, которому нужно добавить разрешение.
    • Добавьте группу разрешений "Statistic" пользователю.

Файлы: store/models.py, store/permissions.py, store/views.py, store/urls.py

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

Задание 4: Управление базой данных

Задание 4 — Дамп и восстановление базы данных

  1. Создайте дамп базы данных со всеми объектами проекта.
  2. Удалите базу данных.
  3. Восстановите базу данных из дампа.

Инструмент: manage.py dumpdata / manage.py loaddata

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

Задание 5: Настройка Swagger

Задание 5 — Настройка Swagger-документации

  1. Скачайте необходимую библиотеку.
  2. Установите и настройте Swagger.
  3. Настройте маршруты для Swagger.
Подсказка: Используйте библиотеку drf-yasg. После настройки API-документация должна быть доступна по маршрутам /swagger/ и /redoc/.

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

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