/api_yamdb

api_yamdb

Primary LanguagePython

REST API сервис для отзывов пользователей на кино, фильмы и музыку.

Описание проекта

Проект YaMDb собирает отзывы пользователей на произведения (книги, фильмы и музыка). Произведению может быть присвоен жанр из списка предустановленных. Новые жанры может создавать только администратор. Пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число). На основании оценок рассчитывается общий рейтинг произведения.

Алгоритм регистрации пользователей

1.Пользователь отправляет POST-запрос на добавление нового пользователя с параметрами email и username на эндпоинт /api/v1/auth/signup/.
2.YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
3.Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен). В результате пользователь получает токен и может работать с API проекта, отправляя этот токен с каждым запросом.
4.Для повторного получения письма с кодом подтверждения пользователь отправляет POST-запрос с параметрами username и email на эндпоинт /api/v1/auth/remind/.
5.При желании пользователь отправляет PATCH-запрос на эндпоинт /api/v1/users/me/ и заполняет поля в своём профайле.
6.Если пользователя создаёт администратор, например, через POST-запрос на эндпоинт api/v1/users/ — письмо с кодом также приходит к нему на почту.

Пользовательские роли

  • Аноним — может просматривать описания произведений, читать отзывы и комментарии.
  • Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям (фильмам/книгам/песенкам), может комментировать чужие отзывы; может редактировать и удалять свои отзывы и комментарии. Эта роль присваивается по умолчанию каждому новому пользователю.
  • Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять любые отзывы и комментарии.
  • Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
  • Суперюзер Django — обладает правами администратора (admin). Даже если изменить пользовательскую роль суперюзера — это не лишит его прав администратора. Суперюзер — всегда администратор, но администратор — не обязательно суперюзер.

Используемые технологии:

  • Python 3.8
  • Django 3.2
  • Django Rest Framework

Установка проекта из репозитория

  1. Клонировать репозиторий и перейти в него в командной строке:

git@github.com:SkaDin/api_yamdb.git

cd api_yamdb

  1. Cоздать и активировать виртуальное окружение:

python -m venv venv

source vens/Scripts/activate

  1. Установить зависимости из файла requirements.txt:

python -m pip install --upgrade pip

pip install -r requirements.txt

  1. Выполнить миграции и запустить проект:

python manage.py migrate

python manage.py runserver

Документация к проекту

Документация для API после установки доступна по адресу:

http://127.0.0.1/redoc/

Авторы проекта:

MikeWazowskyi

Grindelwaldoff

SkaDin