Skip to content

Sveagle/YamDB_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# YaMDb API

REST API для сервиса YaMDb (Yet another Movie Database) — базы данных о фильмах, книгах и музыке.
Пользователи могут оставлять отзывы и оценки к произведениям, комментировать отзывы других пользователей.

## Основные функции

- **Регистрация пользователей** с подтверждением по email
- **JWT-аутентификация** для безопасного доступа к API
- **Управление произведениями** (фильмы, книги, музыка) с категориями и жанрами
- **Система отзывов** с оценками от 1 до 10
- **Комментарии** к отзывам других пользователей
- **Ролевая система**: пользователь, модератор, администратор
- **Автоматический расчет рейтинга** произведений на основе отзывов
- **Фильтрация и поиск** по произведениям

## Технологии

- Python
- Django
- Django REST Framework
- JWT
- SQLite

## Установка и запуск

### 1. Клонирование репозитория

```bash
git clone <repository-url>
cd api-yamdb

2. Создание виртуального окружения

python -m venv venv
source venv/bin/activate  # Linux/MacOS
venv\Scripts\activate     # Windows

3. Установка зависимостей

pip install -r requirements.txt

4. Применение миграций

python manage.py makemigrations
python manage.py migrate

5. Наполнение базы данных тестовыми данными

Проект включает скрипт для загрузки тестовых данных:

# Запуск скрипта наполнения базы данных
python manage.py load_csv_data

Или используйте готовый скрипт:

bash set_up_data.sh

6. Создание суперпользователя (опционально)

python manage.py createsuperuser

7. Запуск сервера

python manage.py runserver

API будет доступно по адресу: http://localhost:8000/api/v1/

Документация API

После запуска сервера документация доступна по адресу: http://localhost:8000/redoc/

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

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

POST /api/v1/auth/signup/
Content-Type: application/json

{
  "email": "user@example.com",
  "username": "username"
}

Ответ:

{
  "email": "user@example.com",
  "username": "username"
}

2. Получение JWT-токена

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

{
  "username": "username",
  "confirmation_code": "abc123def456"
}

Ответ:

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

3. Получение списка произведений

GET /api/v1/titles/
Authorization: Bearer <your_token>

Ответ:

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 1,
      "name": "Интерстеллар",
      "year": 2014,
      "rating": 9,
      "description": "Фантастический фильм о путешествии через червоточину...",
      "genre": [
        {"name": "Фантастика", "slug": "sci-fi"},
        {"name": "Драма", "slug": "drama"}
      ],
      "category": {"name": "Фильмы", "slug": "movies"}
    }
  ]
}

4. Создание отзыва

POST /api/v1/titles/1/reviews/
Authorization: Bearer <your_token>
Content-Type: application/json

{
  "text": "Отличный фильм с глубоким смыслом!",
  "score": 10
}

Ответ:

{
  "id": 1,
  "text": "Отличный фильм с глубоким смыслом!",
  "author": "username",
  "score": 10,
  "pub_date": "2023-10-01T12:00:00Z"
}

5. Добавление комментария

POST /api/v1/titles/1/reviews/1/comments/
Authorization: Bearer <your_token>
Content-Type: application/json

{
  "text": "Согласен, актерская игра просто великолепна!"
}

Ответ:

{
  "id": 1,
  "text": "Согласен, актерская игра просто великолепна!",
  "author": "another_user",
  "pub_date": "2023-10-01T12:05:00Z"
}

Модели данных

  • Пользователи - кастомная модель с ролями (user, moderator, admin)
  • Категории - категории произведений (фильмы, книги, музыка)
  • Жанры - жанры произведений
  • Произведения - фильмы, книги, музыка с автоматическим расчетом рейтинга
  • Отзывы - отзывы пользователей с оценками
  • Комментарии - комментарии к отзывам

Разработчики

Святослав Орел - mrsveagle@gmail.com

Дмитрий Чистяков - dmitry.chistyakovv@gmail.com

Гордей Ипатьев - cowboyg@yandex.ru

Проект разработан в рамках учебного курса по Django REST Framework.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages