Skip to content

Repository files navigation

YaMDb

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

Стек технологий

  • 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.git
cd api-yamdb

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

python -m venv venv
. venv/Scripts/activate

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

python -m pip install --upgrade pip
pip 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/

Примеры запросов:

  1. Регистрация пользователя:

Запроc:

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/ (т.к. в проекте используется файловый бекенд).

Ответ (200 OK):

{
    "email": "new_user@example.com",
    "username": "new_user"
}
  1. Получение JWT-токена:

Запроc:

POST http://127.0.0.1:8000/api/v1/auth/token/
Content-Type: application/json

{
    "username": "new_user",
    "confirmation_code": "string"
}

Ответ (200 OK):

{
    "token": "string"
}
  1. Получение списка произведений:

Запроc:

GET http://127.0.0.1:8000/api/v1/titles/
Content-Type: application/json

Ответ (200 OK):

{
    "count": 0,
    "next": "string",
    "previous": "string",
    "results": [
        {...}
    ]
}
  1. Создание отзыва:

Запроc:

POST http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
Authorization: Bearer <access_token>
Content-Type: application/json

{
    "text": "Отличный фильм!",
    "score": 10
}

Ответ (201 Created):

{
    "id": 0,
    "text": "Отличный фильм!",
    "author": "new_user",
    "score": 10,
    "pub_date": "2026-04-29T20:45:37Z"
}

Права доступа:

  • Анонимные пользователи: только чтение
  • Аутентифицированные пользователи: всё, что могут анонимные пользователи + создание, редактирование и удаление своих оценок, отзывов и комментариев. Эта роль присваивается по умолчанию каждому новому пользователю
  • Модераторы: всё, что могут аутентифицированные пользователи + удаление и редактирование любых отзывов и комментариев
  • Администраторы: полные права на управление контентом. Могут создавать и удалять произведения, категории и жанры. Могут назначать роли пользователям

Авторы:

Юрий Кудряшов - тимлид, управление пользователями, система регистрации и аутентификации, права доступа

Николай Будаев - произведения, категории, жанры, импорт данных из csv файлов

Роман Корыткин - отзывы, комментарии, рейтинг произведений

About

Веб-сервис для сбора отзывов на произведения

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages