REST API для сервиса YaMDb — базы отзывов о фильмах, книгах и музыке.
Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Произведению может быть присвоен жанр. Новые жанры может создавать только администратор. Читатели оставляют к произведениям текстовые отзывы и выставляют произведению рейтинг (оценку в диапазоне от одного до десяти). Из множества оценок автоматически высчитывается средняя оценка произведения.
Аутентификация по JWT-токену
Поддерживает методы GET, POST, PUT, PATCH, DELETE
Предоставляет данные в формате JSON
Cоздан в команде из трёх человек с использованим Git в рамках учебного курса Яндекс.Практикум.
- проект написан на Python с использованием Django REST Framework
- библиотека Simple JWT - работа с JWT-токеном
- библиотека django-filter - фильтрация запросов
- базы данных - SQLite3
- система управления версиями - git
AUTH: аутентификация.
USERS: пользователи.
TITLES: произведения, к которым пишут отзывы (определённый фильм, книга или песенка).
CATEGORIES: категории (типы) произведений ("Фильмы", "Книги", "Музыка").
GENRES: жанры произведений. Одно произведение может быть привязано к нескольким жанрам.
REVIEWS: отзывы на произведения. Отзыв привязан к определённому произведению.
COMMENTS: комментарии к отзывам. Комментарий привязан к определённому отзыву.
Пользователь отправляет POST-запрос с параметром email на /api/v1/auth/email/
.
YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
Пользователь отправляет POST-запрос с параметрами email и confirmation_code на /api/v1/auth/token/
, в ответе на запрос ему приходит token (JWT-токен).
Эти операции выполняются один раз, при регистрации пользователя. В результате пользователь получает токен и может работать с API, отправляя этот токен с каждым запросом.
Аноним — может просматривать описания произведений, читать отзывы и комментарии.
Аутентифицированный пользователь (user) — может читать всё, как и Аноним, дополнительно может публиковать отзывы и ставить рейтинг произведениям (фильмам/книгам/песенкам), может комментировать чужие отзывы и ставить им оценки; может редактировать и удалять свои отзывы и комментарии.
Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять и редактировать любые отзывы и комментарии.
Администратор (admin) — полные права на управление проектом и всем его содержимым. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
Администратор Django — те же права, что и у роли Администратор.
Склонируйте репозиторий. Находясь в папке с кодом создайте виртуальное окружение python -m venv venv
, активируйте его (Windows: source venv\scripts\activate
; Linux/Mac: source venv/bin/activate
), установите зависимости python -m pip install -r requirements.txt
.
Для запуска сервера разработки, находясь в директории проекта выполните команды:
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
Перейдите в папку проекта и выполните команду:
docker-compose up -d --build
При первом запуске для функционирования проекта выполните команды:
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input
Заполните базу начальными данными
docker-compose exec web python manage.py loaddata fixtures.json
После запуска проекта, подробную инструкцию можно будет посмотреть по адресу http://127.0.0.1:8000/redoc/