API YaMDB - это API-сервис, который собирает отзывы (Review) и оценки пользователей на произведения (Title) в разных категориях и жанрах, а так же комментарии (Comment) к отзывам. Из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). Произведения делятся на категории (Category) и жанры (Genre), список которых может быть расширен, но правами на добавление новых жанров, категорий и произведений обладает только администратор. Добавлять, редактировать и удалять пользователей (User) могут только администраторы. Редактировать и удалять отзывы/комментарии могут только их авторы, модераторы и администраторы. Для авторизации пользователей используется код подтверждения. Для аутентификации пользователей используются JWT-токены.
Реализован REST API для моделей проекта, для аутентификации применяется JWT-токен. В проекте реализованы пермишены, фильтрации, сортировки и поиск по запросам клиентов, реализована пагинация ответов от API.
Пользовательские роли и права доступа:
- Аноним — может просматривать описания произведений, читать отзывы и комментарии.
- Аутентифицированный пользователь (user) — может читать всё, как и Аноним, может публиковать отзывы и ставить оценки произведениям (фильмам/книгам/песенкам), может комментировать отзывы; может редактировать и удалять свои отзывы и комментарии, редактировать свои оценки произведений. Эта роль присваивается по умолчанию каждому новому пользователю.
- Модератор (moderator) — те же права, что и у Аутентифицированного пользователя, плюс право удалять и редактировать любые отзывы и комментарии.
- Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
1. Клонировать репозиторий и перейти в папку c проектом
git clone git@github.com:ItsFreez/API_YaMDB.git
cd api_yamdb
2. Cоздать и активировать виртуальное окружение
Для Windows
python -m venv env
source venv/Scripts/Activate
Для MacOS/Linux
python3 -m venv env
source env/bin/activate
3. Обновить менеджер pip и установить зависимости из файла requirements.txt
python -m pip install --upgrade pip
pip install -r requirements.txt
4. Применить миграции для создания базы данных
cd api_yamdb
python manage.py migrate
5. Запустить проект
python manage.py runserver
6. Изучить эндпоинты и примеры их использования в документации Redoc
http://127.0.0.1:8000/redoc/