Skip to content

yamdb_final is an open API project allowing users to review and rate various artworks like movies, books, and music. It features user registration, JWT authentication, and category-based artwork management.

Notifications You must be signed in to change notification settings

DmitrySmolov/yamdb_final

Repository files navigation

workflow status badge

Проект YaMDb

Описание

YaMDB - это открытый API для отзывов, который позволяет пользователям ставить оценки и писать отзывы о произведениях искусства. Этот сервис предоставляет возможность получить доступ к множеству отзывов и оценок на различные категории произведений искусства, таких как фильмы, книги, музыка и многое другое.

С помощью YaMDB пользователи могут ставить оценки произведениям искусства, выражая свое мнение о них. Кроме того, они могут писать отзывы, в которых описывают свои впечатления от произведения. Это позволяет пользователям делиться своими мыслями и чувствами с другими людьми, а также получать информацию от других пользователей, которые уже оценили произведение.

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

YaMDB является открытым API, что означает, что любой разработчик может использовать его для создания своего собственного приложения. Это дает возможность создавать новые приложения, которые будут использовать информацию, предоставляемую сервисом, для различных целей. Например, можно создать приложение, которое будет предоставлять пользователю рекомендации на основе его предпочтений и оценок.

В целом, YaMDB - это полезный сервис для всех, кто интересуется произведениями искусства. Он предоставляет возможность получить доступ к множеству отзывов и оценок на различные категории произведений искусства, а также позволяет пользователям делиться своими мыслями и чувствами с другими людьми. Кроме того, это открытый API, который может быть использован для создания различных приложений, основанных на информации, предоставляемой сервисом.

Технологии:

  • Python 3.9
  • Django 3.2
  • djangorestframework 3.12.4
  • ReDoc

Как запустить проект

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:babyshitt/api_yamdb.git

Перейти в директорию infra проекта и создать файл .env для хранения переменных окружения. Файл должен содержать следующие переменные:

SECRET_KEY=<ваш секретный ключ для settings.py Django проекта>
DB_ENGINE=django.db.backends.postgresql
DB_NAME=<имя вашей базы postgres>
POSTGRES_USER=<имя пользователя для допуска к базе>
POSTGRES_PASSWORD=<пароль для допуска к базе>
DB_HOST=db
DB_PORT=5432

По-прежнему находясь в директории infra выполнить команду для сборки контейнеров в фоновом режиме:

docker-compose up -d

Далее выполнить последовательно следующие команды для применения миграций, создания суперпользователя и сбора статических файлов проекта:

docker-compose exec web python manage.py migrate users # миграции для кастомной модели user уже созданы, её осталось только применить
docker-compose exec web python manage.py makemigrations reviews # создаём миграции для моделей приложения reviews
docker-compose exec web python manage.py migrate # применяем все оставшиеся миграции
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input

В качестве примера для базы данных создано несколько записей, хранящихся в файле fixtures.json. Их можно внести в базу данных развернутого проекта следующей командой:

docker-compose exec web python manage.py loaddata fixtures.json

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

Регистрация нового пользователя: Получить код подтверждения на переданный email. Права доступа: Доступно без токена. Использовать имя 'me' в качестве username запрещено. Поля email и username должны быть уникальными.

http://127.0.0.1:8000/api/v1/auth/signup/

email required: string <= 254 characters username required: string <= 150 characters ^ [\w.@+-]+\z

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

Получение JWT-токена Получение JWT-токена в обмен на username и confirmation code. Права доступа: Доступно без токена.

http://127.0.0.1:8000/api/v1/auth/token/

username required: string <= 150 characters ^ [\w.@+-]+\z confirmation_code required: string

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

Получение списка всех категорий Получить список всех категорий Права доступа: Доступно без токена

http://127.0.0.1:8000/api/v1/categories/

search: string -> Поиск по названию категории

{
  "count": 0,
  "next": "string",
  "previous": "string",
  "results": [
    {
      "name": "string",
      "slug": "string"
    }
  ]
}

Получение списка всех отзывов Получить список всех отзывов. Права доступа: Доступно без токена.

http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/

title_id required: integer -> ID произведения

{
  "count": 0,
  "next": "string",
  "previous": "string",
  "results": [
    {
      "id": 0,
      "text": "string",
      "author": "string",
      "score": 1,
      "pub_date": "2019-08-24T14:15:22Z"
    }
  ]
}

Авторы

Андрей Тарасов - GitHub: https://github.com/babyshitt Эдуард Гумен - GitHub: https://github.com/hydrospirt Дмитрий Смолов - GitHub: https://github.com/DmitrySmolov

About

yamdb_final is an open API project allowing users to review and rate various artworks like movies, books, and music. It features user registration, JWT authentication, and category-based artwork management.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages