Платформа для сбора отзывов пользователей на произведения. Сами произведения не хранятся, здесь нельзя посмотреть фильм, прочитать книгу или послушать музыку. Произведения делятся на категории и жанры, а пользователи могут оставлять к ним текстовые отзывы и оценки, а также есть возможность комментировать отзывы.
-
Python 3.12+
-
Django 6.0
-
Django REST Framework 3.15
-
Simple JWT
-
Python-dotenv
-
SQLite
-
Pytest
-
Pytest Django
-
Postman Collection
-
Git и GitHub
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:0den7/api-yamdb.gitcd api-yamdbСоздать и активировать виртуальное окружение:
python -m venv venv. venv/Scripts/activateУстановить зависимости из файла requirements.txt:
python -m pip install --upgrade pippip install -r requirements.txtСоздать файл .env в корне проекта (см. .env.example):
Выполнить миграции:
python manage.py migrateЗапустить проект:
python manage.py runserverВ проекте есть management-команда для импорта данных из CSV-файлов:
python manage.py import_csvФайлы для импорта находятся в папке api_yamdb/static/data/. Команда загрузит произведения, пользователей, категории, жанры, отзывы и комментарии.
Когда вы запустите проект, документация API будет доступна по адресу:
http://127.0.0.1:8000/redoc/
- Регистрация пользователя:
POST http://127.0.0.1:8000/api/v1/auth/signup/
Content-Type: application/json
{
"email": "new_user@example.com",
"username": "new_user"
}Код подтверждения будет в письме в папке sent_emails/ (т.к. в проекте используется файловый бекенд).
{
"email": "new_user@example.com",
"username": "new_user"
}- Получение JWT-токена:
POST http://127.0.0.1:8000/api/v1/auth/token/
Content-Type: application/json
{
"username": "new_user",
"confirmation_code": "string"
}{
"token": "string"
}- Получение списка произведений:
GET http://127.0.0.1:8000/api/v1/titles/
Content-Type: application/json{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{...}
]
}- Создание отзыва:
POST http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
Authorization: Bearer <access_token>
Content-Type: application/json
{
"text": "Отличный фильм!",
"score": 10
}{
"id": 0,
"text": "Отличный фильм!",
"author": "new_user",
"score": 10,
"pub_date": "2026-04-29T20:45:37Z"
}- Анонимные пользователи: только чтение
- Аутентифицированные пользователи: всё, что могут анонимные пользователи + создание, редактирование и удаление своих оценок, отзывов и комментариев. Эта роль присваивается по умолчанию каждому новому пользователю
- Модераторы: всё, что могут аутентифицированные пользователи + удаление и редактирование любых отзывов и комментариев
- Администраторы: полные права на управление контентом. Могут создавать и удалять произведения, категории и жанры. Могут назначать роли пользователям
Юрий Кудряшов - тимлид, управление пользователями, система регистрации и аутентификации, права доступа
Николай Будаев - произведения, категории, жанры, импорт данных из csv файлов
Роман Корыткин - отзывы, комментарии, рейтинг произведений