📝 Практикум 10: задачи
⚡ Все задачи — кратко
- Задание 1 (request.user): perform_create + get_queryset + маршруты
- Задание 2 (кастомные разрешения): IsCustomerOrReadOnly + применение к view
- Задание 3 (статистика): Meta.permissions + CanViewStatistics + эндпоинт + маршрут + миграции + группа в admin
- Задание 4 (дамп БД): dumpdata + удалить БД + loaddata
- Задание 5 (Swagger): pip install drf-yasg + INSTALLED_APPS + маршруты
Контекст практикума: Работаем с DRF-проектом интернет-магазина (models:
Order, Customer, Product). Задачи взяты дословно из источника «Django Practicum 10».
Задание 1: Извлечение пользователя из объекта запроса
Задание 1 — Извлечение пользователя из объекта запроса
- Настройте автоматическое добавление клиента при оформлении заказа.
- Настройте извлечение пользователя для получения объектов, где он является владельцем в новом представлении.
- Обновите маршруты.
Файлы: store/views.py, store/urls.py
Задание 2: Создание кастомных классов разрешений
Задание 2.1 — Создайте кастомное разрешение IsCustomerOrReadOnly
- Создайте кастомное разрешение
IsCustomerOrReadOnly.
Файл: store/permissions.py
Подсказка: Разрешение должно позволять просматривать объект всем пользователям, но редактировать — только владельцу (полю
customer).
Задание 2.2 — Примените кастомное разрешение к представлениям
- Примените кастомное разрешение
IsCustomerOrReadOnlyк представлению для работы с конкретным заказом.
Файл: store/views.py
Задание 3: Добавление эндпоинта для статистики
Задание 3 — Добавление эндпоинта для статистики (Части 1 и 2)
- Определите пользовательское разрешение
"can_view_statistics"для модели. - Создайте кастомное разрешение для доступа к статистике.
- Создайте эндпоинт для статистики.
- Добавьте маршрут для статистики.
- Создайте и примените миграции.
- Создайте группу разрешений "Statistic" в админ панели и присвойте её первому админ пользователю:
- Зайдите в админку Django.
- Создайте группу разрешений "Statistic" с разрешением "Can view statistics".
- Найдите пользователя, которому нужно добавить разрешение.
- Добавьте группу разрешений "Statistic" пользователю.
Файлы: store/models.py, store/permissions.py, store/views.py, store/urls.py
Задание 4: Управление базой данных
Задание 4 — Дамп и восстановление базы данных
- Создайте дамп базы данных со всеми объектами проекта.
- Удалите базу данных.
- Восстановите базу данных из дампа.
Инструмент: manage.py dumpdata / manage.py loaddata
Задание 5: Настройка Swagger
Задание 5 — Настройка Swagger-документации
- Скачайте необходимую библиотеку.
- Установите и настройте Swagger.
- Настройте маршруты для Swagger.
Подсказка: Используйте библиотеку
drf-yasg. После настройки API-документация должна быть доступна по маршрутам /swagger/ и /redoc/.