Skip to content

john-neg/yamdb_final

Repository files navigation

yamdb_workflow

api_yamdb

База данных произведений (Practicum by Yandex education project)

Проект доступен по адресу - http:https://130.193.48.5/redoc/

Технологии:

YaMDB учебный проект базирующийся на:

  • Python 3.7
  • Django 2.2.28
  • Docker 20.10.18
  • Nginx 1.21.3
  • Postgres - 13.0

Описание:

REST API сервис для YaMDB (база данных музыки, книг, фильмов и т.д.).

Полная CRUD имплементация для моделей Title, User.

Зарегистрированные пользователи могут публиковать отзывы

Незарегистрированные пользователи могут оставлять комментарии к отзывам.


Установка и запуск с помощью Docker

Установить переменные окружения

nano infra/.env

Содержимое файла .env

SECRET_KEY='key'
DEBUG=False
ALLOWED_HOSTS='localhost web 127.0.0.1'
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres-pass
DB_HOST=db
DB_PORT=5432

Запуск docker-compose

cd infra
docker compose up -d --build

Применения миграций

docker compose exec web python manage.py migrate

Загрузка данных в БД

docker compose exec web python manage.py loaddata db.json

Создание суперпользователя

docker compose exec web python manage.py createsuperuser --username=admin [email protected]

Сбор статики в /static/

docker compose exec web python manage.py collectstatic --no-input

Авторизация

Получение код подтверждения

GET /api/v1/auth/signup/

PAYLOAD
{
    "email": "string",
    "username": "string"
}

На адрес электронной почты придет код регистрации

Получение токена

GET /api/v1/auth/token/

PAYLOAD
{
    "username": "string",
    "confirmation_code": "string"
}
RESPONSE
{
  "token": "string"
}

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

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

GET /api/v1/titles/

QUERY PARAMETERS

category (string) фильтрует по полю slug категории

genre (string) фильтрует по полю slug жанра

name (string) фильтрует по названию произведения

year (integer) фильтрует по году

RESPONSE
[
  {
    "count": 0,
    "next": "string",
    "previous": "string",
    "results": [
      {
        "id": 0,
        "name": "string",
        "year": 0,
        "rating": 0,
        "description": "string",
        "genre": [
          {
            "name": "string",
            "slug": "string"
          }
        ],
        "category": {
          "name": "string",
          "slug": "string"
        }
      }
    ]
  }
]

POST /api/v1/titles/

QUERY PARAMETERS

name (required, string) Название

year (required, integer) Год выпуска

description (string) Описание

genre (required, Array of strings) Slug жанра

category (required, string) Slug категории

PAYLOAD
{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}
RESPONSE
{
  "id": 0,
  "name": "string",
  "year": 0,
  "rating": 0,
  "description": "string",
  "genre": [
    {
      "name": "string",
      "slug": "string"
    }
  ],
  "category": {
    "name": "string",
    "slug": "string"
  }
}

Author info:

Evgeny Semenov

License

MIT

About

Django project with CI/CD

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages