/yamdb_api

API сервис для размещения отзывов и комментариев

Primary LanguagePython

Проект YaMDb

Cервис YaMDb, который собирает отзывы и оценки пользователей на различные произведения. Произведения делятся на категории, такие как «Книги», «Фильмы», «Музыка». Произведению может быть присвоен жанр из списка предустановленных. Добавлять произведения, категории и жанры может только администратор.
Сервис позволяет пользователям оставлять к произведениям текстовые отзывы и ставить произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). Пользователи могут оставлять комментарии к отзывам.


Использованные технологии:

  • Django 3.2
  • Django REST Framework 3.12
  • Библиотека django-import-export 3.0

Приложение написано на Python 3.7


Статус


Как начать работу с проектом:

Клонировать репозиторий и перейти в нём в папку с конфигурацией сборки контейнеров:

git clone git@github.com:VtlBz/yamdb_final.git
cd yamdb_final/infra

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

SECRET_KEY=<указать-тут-ключ-проекта>
ALLOWED_HOSTS=<перечислить разрешенные хосты через пробел>

DB_ENGINE=django.db.backends.postgresql # по умолчанию работаем с postgresql
DB_NAME=postgres # указать имя базы данных
POSTGRES_USER=<имя_пользователя_бд> # логин для подключения к базе данных
POSTGRES_PASSWORD=<пароль пользователя бд> # пароль для подключения к БД (установите свой)
DB_HOST=yamdb-db # название сервиса (контейнера), по умолчанию - yamdb-db
DB_PORT=5432 # порт для подключения к БД, стандартный по умолчанию

Копировать на сервер папку nginx, файлы .env и docker-compose.yaml:

scp docker-compose.yaml <username>@<server>:/home/<username>
scp .env <username>@<server>:/home/<username>
scp -r nginx <username>@<server>:/home/<username>

В GitHub Actions указать в репозитории все необходимые переменные:

DOCKER_PASSWORD # пароль DockerHub, где будет храниться образ основной части проекта
DOCKER_USERNAME # имя пользователя (репозитория) DockerHub
SSH_KEY # ключ, с помощью которого можно подключится к серверу для деплоя
HOST # имя или ардес сервера
USER # логин пользователя на сервере
TELEGRAM_TOKEN # Токен ТГ бота, который сможет выслать оповещение об удачном деплое
TELEGRAM_TO # ID чата (пользователя), которому придёт оповещение

При первом запуске создать суперпользователя:

docker-compose exec yamdb-srv python manage.py createsuperuser

Импорт заранее подготовленных данных:

Для импотра данных необходимо, что бы название всех таблиц соответствовало названию моделей, в которые производится импорт из этих таблиц.
Затем необходимо в файле настроек скрипта fillyamdb_input_config.py (reviews -> management -> commands) указать в константе MODEL_LIST название моделей и приложений, в которых находятся эти модели в виде <appname.Modelname>. Порядок записи должен учитывать зависимости внешних ключей в этих таблицах.
Команда для импорта - fillyamdb.

manage.py fillyamdb -p <folder_path> # выполнять внутри контейнера

Аргумент -p (--path) опциональный, вместо него можно указать путь к папке в константе DEFAULT_PATH.

* Тестовые данные лежат в папке ./static/db_example_data

Тестовый сервер возможно работает тут