📝 Практикум 10: задачи
⚡ Все задачи — кратко
- Задание 1 (request.user): perform_create + get_queryset + маршруты
- Задание 2 (кастомные разрешения): IsCustomerOrReadOnly + применение к view
- Задание 3 (статистика): Meta.permissions + CanViewStatistics + эндпоинт + маршрут + миграции + группа в admin
- Задание 4 (дамп БД): dumpdata + удалить БД + loaddata
- Задание 5 (OpenAPI 3): pip install drf-spectacular + DEFAULT_SCHEMA_CLASS + маршруты
Контекст практикума: Работаем с 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 — Настройка OpenAPI 3 документации
- Скачайте необходимую библиотеку.
- Установите и настройте генератор OpenAPI 3.
- Настройте маршруты для схемы, Swagger UI и ReDoc.
Подсказка: Используйте библиотеку
drf-spectacular. После настройки схема должна быть доступна по /api/schema/, Swagger UI — по /api/docs/, ReDoc — по /api/redoc/.
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Что важнее всего в практическом задании?
Вопрос 2
Как безопаснее двигаться в практикуме?
Вопрос 3
Что делать, если решение не совпадает с ожидаемым результатом?
Вопрос 4
Что обычно хранит JWT?
Вопрос 5
Для чего нужны signals в Django?
Вопрос 6
Что означает право x для файла?