Skip to content

Учебный проект "Каталог фильмов, книг и альбомов" на Django Rest Framework

License

Notifications You must be signed in to change notification settings

DashaMalva/yamdb

Repository files navigation

Проект YaMDb

workflow status
Python Django Django REST Framework gunicorn Nginx PostgreSQL docker

YaMDb - каталог фильмов, книг и музыкальных альбомов с системой рейтингов, отзывов и комментариев к отзывам.

Описание проекта

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

Технологии

Python 3.7
Django 2.2.16
Django rest framework 3.12.4
Gunicorn 20.0.4
Psycopg2 binary 2.9.3

Проект упакован в связанные контейнеры Docker:

  • контейнер для Django-проекта (образ python:3.7-slim);
  • контейнер для базы данных Postgres (образ postgres:13.0-alpine);
  • контейнер для веб-сервера Nginx (nginx:1.21.3-alpine).

Шаблон наполнения env-файла

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

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=12345
DB_HOST=db DB_PORT=5432

Команды для запуска приложения в контейнерах

  • Развернуть проект:
docker-compose up -d
  • Выполнить миграции, создать суперпользователя и собрать статику:
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

Команды для заполнения базы данными

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

Возможности YaMDb API

YaMDb API позволяет работать со следующими сущностями:

  • Пользователи сервиса;
  • Категории произведений;
  • Жанры произведений;
  • Произведения;
  • Отзывы к произведениям;
  • Комментарии к отзывам;

YaMDb API позволяет:

  • получить список всех пользователей, создать пользователя, получить пользователя по username, изменить данные пользователя по username, удалить пользователя по username, получить данные своей учетной записи, изменить данные своей учетной записи;
  • получить список всех произведений; создать отзывы на конкретное произведение с выставлением оценки в диапазоне от 1 до 10 или без оценки; получать информацию об произведении, включая его рейтинг, который рассчитывается как среднее от всех оценок, выставленных пользователями для данного произведения, обновить информацию о произведении, удалять произведение;
  • получать список всех категорий, создать категорию, удалить категорию;
  • получить список всех жанров, создать жанр, удалить жанр;
  • получить список всех отзывов, создать новый отзыв, получить отзыв, частично обновить отзыв, удалить отзыв;

Подробная документация по API YaMDb (v1):

Подробная документация по API в формате Redoc доступна по адресу http://127.0.0.1:8000/redoc

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

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

http://127.0.0.1:8000/api/v1/titles/

Добавление произведения [POST]

http://127.0.0.1:8000/api/v1/titles/

Получение списка отзывов к произведению title_id [GET]

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

Добавление комментария к отзыву [POST]

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

Как развернуть проект на компьютере:

  1. Клонировать репозиторий c GitHub
$ git clone https://github.com/dvnesteroff/api_yamdb.git
  1. Создать виртуальное окружение
$ python -m venv venv
  1. Запустить виртуальное окружение
$ source venv/Scripts/activate
  1. Обновить менеджер пакетов pip
$ python -m pip install --upgrade pip
  1. Установить зависимости из requirements.txt
$ pip install -r requirements.txt
  1. Выполнить миграции
$ python manage.py migrate
  1. Выполнить импорт начальных данных (опционально)
$ python manage.py load-data
  1. Запустить проект
$ python manage.py runserver

Адреса сервера с работающим приложением

Лицензия

The MIT License (MIT)

Авторы проекта

Студенты Яндекс.Практикум, Когорта 12+, курс "API: интерфейс взаимодействия программ": Дарья Матвиевская, Елизавета Лобачевская, Вячеслав Казаков, Денис Нестеров

About

Учебный проект "Каталог фильмов, книг и альбомов" на Django Rest Framework

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages