Skip to content

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles).

Notifications You must be signed in to change notification settings

NikKurkov/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект YaMDb

Проект YaMDb предназначен для сбора пользовательских отзывов (Review) о различных произведениях (Titles). Эти произведения группируются по категориям: «Книги», «Фильмы» и «Музыка». При необходимости администратор может добавлять новые категории, например «Изобразительное искусство» или «Ювелирные изделия».

Сами книги, фильмы или музыкальные треки на платформе не хранятся: посмотреть картину или послушать композицию здесь невозможно.

Внутри каждой категории находятся конкретные произведения. Так, в разделе «Книги» могут быть «Винни‑Пух и все‑все‑все» или «Марсианские хроники», а в разделе «Музыка» — песня «Давеча» группы «Насекомые» и Вторая сюита Баха.

Для каждого произведения указывается жанр (Genre), выбираемый из заранее подготовленного списка (к примеру, «Сказка», «Рок» или «Арт‑хаус»). Добавлять новые жанры также может только администратор.

Пользователи выражают своё мнение, публикуя текстовые отзывы и выставляя оценки от 1 до 10. Среднее значение этих оценок формирует рейтинг произведения. Один пользователь вправе оставить не более одного отзыва на каждое произведение.

Как запустить проект

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

git clone https://github.com/nikkurkov/api_yamdb

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

python3 -m venv env
source env/bin/activate

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

python3 -m pip install --upgrade pip
pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Запустить проект:

python3 manage.py runserver

Техническое описание проекта YaMDb

Документация API YaMDb доступна по адресу /redoc/. В ней описаны все допустимые запросы, структура ответов и указаны уровни доступа для каждой операции.

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

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

Самостоятельная регистрация новых пользователей

Пользователь делает POST‑запрос с параметрами email и username на эндпоинт /api/v1/auth/signup/. YaMDB отправляет на указанный адрес письмо с кодом подтверждения (confirmation_code). Затем пользователь посылает POST‑запрос на /api/v1/auth/token/, передавая username и confirmation_code; в ответ он получает token (JWT‑токен).

Получив токен, пользователь может обращаться к API, добавляя его в заголовок каждого запроса. После авторизации он вправе отправить PATCH‑запрос на /api/v1/users/me/, чтобы заполнить поля своего профиля (описания полей см. в документации).

Создание пользователя администратором

Администратор может завести учётную запись через админ‑панель или отправив POST‑запрос на эндпоинт api/v1/users/ (структура запроса приведена в документации). На этом этапе письмо с кодом подтверждения не высылается. Далее сам пользователь отправляет свои email и username на /api/v1/auth/signup/, получает письмо с confirmation_code и, как при обычной регистрации, запрашивает токен на /api/v1/auth/token/, передавая username и confirmation_code.

Ресурсы API YaMDb

  • Ресурс auth — операции аутентификации и получения токена.
  • Ресурс users — управление пользователями.
  • Ресурс titles — произведения (конкретный фильм, книга или музыкальное произведение).
  • Ресурс categories — категории («Фильмы», «Книги», «Музыка»).
  • Ресурс genres — жанры; одно произведение может относиться сразу к нескольким жанрам.
  • Ресурс reviews — отзывы на произведения.
  • Ресурс comments — комментарии к отзывам.

Для каждого ресурса в документации указаны эндпоинты, допустимые HTTP‑методы, уровни доступа и дополнительные параметры.

Связанные данные и каскадное удаление

  • При удалении объекта User должны исчезать все его отзывы и комментарии (вместе с оценками).
  • При удалении объекта Title удаляются все связанные отзывы и комментарии к ним.
  • При удалении объекта Review удаляются все комментарии к этому отзыву.
  • При удалении объекта Category связанные произведения остаются.
  • При удалении объекта Genre связанные произведения также остаются.

About

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages