YaMDB - это открытый API для отзывов, который позволяет пользователям ставить оценки и писать отзывы о произведениях искусства. Этот сервис предоставляет возможность получить доступ к множеству отзывов и оценок на различные категории произведений искусства, таких как фильмы, книги, музыка и многое другое.
- Python 3.9
- Django 3.2
- djangorestframework 3.12.4
- ReDoc
- Docker 20.10.24
- Docker-compose
- Yandex.oblako
Клонировать репозиторий и перейти в него в командной строке:
git@github.com:hydrospirt/yamdb_final.git
Cоздать и активировать виртуальное окружение: Linux:
python3 -m venv env
source env/bin/activate
Windows:
py -3.9 -m venv env
source venv/Scripts/activate
Установить зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r api_yamdb/requirements.txt
Войдите на свой удаленный сервер. Остановите службу nginx:
sudo systemctl stop nginx
Установите docker:
sudo apt install docker.io
Установите docker-compose, с этим вам поможет .
Локально отредактировать файл infra/nginx.conf, обязательно в строке server_name вписать IP-адрес сервера Скопировать файлы docker-compose.yml и nginx.conf из директории infra на сервер:
scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp nginx.conf <username>@<host>:/home/<username>/nginx.conf
Для работы с Workflow добавить в Secrets GitHub переменные окружения для работы:
DB_ENGINE=<django.db.backends.postgresql>
DB_NAME=<имя базы данных postgres>
DB_USER=<пользователь базы данных>
DB_PASSWORD=<пароль>
DB_HOST=<db>
DB_PORT=<5432>
DOCKER_PASSWORD=<пароль от DockerHub>
DOCKER_USERNAME=<имя пользователя>
SECRET_KEY=<секретный ключ проекта django>
USER=<username для подключения к серверу>
HOST=<IP сервера>
PASSPHRASE=<пароль для сервера, если он установлен>
SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>
TELEGRAM_TO=<ID чата, в который придет сообщение>
TELEGRAM_TOKEN=<токен вашего бота>
В workflow четыре задачи (job):
- проверка кода на соответствие стандарту PEP8 (с помощью пакета flake8) и запуск pytest из репозитория yamdb_final;
- сборка и доставка докер-образа для контейнера web на Docker Hub;
- автоматический деплой проекта на боевой сервер;
- отправка уведомления в Telegram о том, что процесс деплоя успешно завершился.
Создать миграции:
docker-compose exec web python manage.py makemigrations
Выполнить миграции:
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
Автодобавление данных ../static/data/: Название файлов: 'category.csv', 'genre.csv', 'titles.csv', 'users.csv', 'review.csv', 'comments.csv', 'genre_title.csv'
docker-compose exec web python3 manage.py fill_bd
Перейти по ссылке для проверки:
http://localhost/api/v1/
http://localhost/admin/
Регистрация нового пользователя: Получить код подтверждения на переданный email. Права доступа: Доступно без токена. Использовать имя 'me' в качестве username запрещено. Поля email и username должны быть уникальными.
http://localhost: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://localhost:8000/api/v1/auth/token/
username required
: string <= 150 characters ^ [\w.@+-]+\z
confirmation_code required
: string
{
"username": "string",
"confirmation_code": "string"
}
Получение списка всех категорий Получить список всех категорий Права доступа: Доступно без токена
http://localhost:8000/api/v1/categories/
search: string -> Поиск по названию категории
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"name": "string",
"slug": "string"
}
]
}
Получение списка всех отзывов Получить список всех отзывов. Права доступа: Доступно без токена.
http://localhost: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/hydrospirt Андрей Тарасов - GitHub: https://github.com/babyshitt Дмитрий Смолов - GitHub: https://github.com/DmitrySmolov