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