Данный проект предоставляет API сервис на базе Django REST framework, для получения информации о произведениях (книгах, фильмах и др.), редактирования отзывов и рейтинга. В проекте реализованы такие возможности как:
- Регистрация новых пользователей, верификация по JWT токену;
- Система распределения ролей пользователей.
- Получение списка произведений, просмотр отзывов и комментариев;
- Возможность пользователю оставить отзыв или комментарий к отзыву;
- Возможность ставить оценки к произведениям, на основе которых рассчитывается рейтинг произведения.
Чтоб развернуть проект на локальной машине выполните следующее:
Клонировать репозиторий, открыть папку в Вашем IDE:
git@github.com:time-spacex/api_yamdb.git
Cоздать и активировать виртуальное окружение:
python -m venv env
source venv/scripts/activate
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
Выполнить миграции:
python3 manage.py migrate
В терминале перейти в директорию api_yamdb
cd api_yamdb/
Запустить скрипт для заполнения базы данных произведениями:
python3 csv_data_upload_to_db_sqlite.py
Запустить проект:
python manage.py runserver
Документация к проекту с описанием доступных методов и эндпоинтов:
http://127.0.0.1:8000/redoc/
Для того чтоб зарегистрировать нового пользователя в системе необходимо отправить POST запрос на адрес api/v1/auth/signup/
с параметрами "username" и "email".
После отправки запроса, на указанный email будет отправлено письмо с кодом подтверждения confirmation_code
. Для получения JWT токена отправьте POST запрос с параметрами email
и confirmation_code
на адрес api/v1/auth/token/
. Данный токен в дальнейшем используется для доступа к своему профилю и возможности комментирования отзывов и указания рейтинга.
- Анонимный пользователь - всем незарегистрированным пользователям доступен список произведений, просмотр рейтинга и комментариев;
- Зарегистрированный пользователь - зарегистрированные пользователи имеют доступ к созданию и редактированию отзыва на произведение, оценке рейтинга произведения, комментирование отзывов;
- Модератор - расширенная версия зарегистрированного пользователя, модераторы могут дополнительно удалять отзывы и комментарии;
- Администратор - имеет исключительные права на редактирование и удаление содержимого проекта: произведения, категории, жанры, отзывы и комментарии;
- Суперпользователь - суперпользователь django, обладает правами администратора.
Для удобства выполнения запросов к API можно воспользоваться запросами из папки postman_collection/. Некоторые примеры запросов к API:
• Получение списка произведений, метод GET:
http://127.0.0.1:8000/api/v1/titles/
• Создание отзыва к произведению, метод POST:
http://127.0.0.1:8000/api/v1/titles/<title_id>/reviews/
{
"text": "User review",
"score": 4
}
- Django v.3.2
- Django REST framowork v.3.12.4
- Django REST framowork simple JWT token v.4.7.2
- Клешнев Роман (telegram - @metandr)
- Андронов Андрей (telegram - @andr2ei)
- Райлян Юлия (telegram - @YuliaRay)