Проект YaMDb собирает отзывы пользователей на различные произведения. Запросы к API начинаются с /api/v1/.
- Пользователь отправляет POST-запрос на добавление нового пользователя с параметрами email и username на эндпоинт /api/v1/auth/signup/.
- YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
- Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен).
- При желании пользователь отправляет PATCH-запрос на эндпоинт /api/v1/users/me/ и заполняет поля в своём профайле (описание полей — в документации).
- Аноним — может просматривать описания произведений, читать отзывы и комментарии.
- Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям (фильмам/книгам/песенкам), может комментировать чужие отзывы; может редактировать и удалять свои отзывы и комментарии. Эта роль присваивается по умолчанию каждому новому пользователю.
- Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять любые отзывы и комментарии.
- Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
- Суперюзер Django — обладет правами администратора (admin)
Получить код подтверждения на переданный email. Права доступа: Доступно без токена. Использовать имя 'me' в качестве username запрещено. Поля email и username должны быть уникальными. Должна быть возможность повторного запроса кода подтверждения.
Получение JWT-токена в обмен на username и confirmation code. Права доступа: Доступно без токена.
В проекте были использованы следующие фреймворки и библиотеки:
- Python (3.9)
- Django (3.2): Высокоуровневый веб-фреймворк Python
- djangorestframework (3.12.4): Гибкий фреймворк для построения веб-API
- requests (2.26.0): Библиотека Python для отправки HTTP-запросов
- rest_framework_simplejwt: Библиотека для работы с JWT-токенами
- django-filter (23.5): Библиотека для фильтрации данных на основе полей моделей
Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:RavenIV/api_yamdb.git
cd api_yamdb/
Создать и активировать виртуальное окружение:
python3 -m venv venv
source venv/bin/activate
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
Выполнить миграции из директории проекта:
cd api_yamdb/
python3 manage.py migrate
Импортировать данные из CSV-файлов:
python3 manage.py import_csv
Запустить проект:
python3 manage.py runserver
Документацию к API проекта YAMDB, содержащую примеры запросов и ожидаемых ответов, можно посмотреть после запуска проекта по ссылке.