Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

lmashik/yamdb_final

Repository files navigation

Проект yamdb_final

Статус workflow: badge


Описание

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Title).
Произведения делятся на категории. Список категорий (Category) может быть расширен.
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
К каждому произведению можно оставить отзыв и оценку, на основе оценок рассчитывается рейтинг.
Каждый отзыв может быть прокомментирован.


Используемые технологии

  • Python 3.7
  • Django Rest Framework 3.12.4 (библиотека для преобразования Django-приложения в REST API)
  • Postman (графическая программа для тестирования API)
  • PostgreSQL (система управления базами данных)
  • Docker (программная платформа контейнеризации)
  • Docker Compose (средство для определения и запуска приложений Docker с несколькими контейнерами)
  • Nginx (веб-сервер для статики)
  • Gunicorn (веб WSGI-сервер)
  • GitHub Actions (сервис автоматизации тестирования, размещения и запуска проекта на сервере)

Установка

  1. Клонируем репозиторий и перейти в директорию infra в командной строке
git clone https://github.com/lmashik/infra_sp2.git
cd infra
  1. Создаем файл .env для переменных виртуального окружения и заходим в него
nano .env
  1. Заполняем файл значениями переменных из файла .env.example
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=<username>
POSTGRES_PASSWORD=<password>
DB_HOST=db
DB_PORT=5432
SECRET_KEY=<secret_key>
  1. Создаем образ и контейнеры, запускаем контейнеры в фоновом режиме
sudo docker-compose up -d

(Для новых версий docker-compose как плагина к docker

sudo docker compose up -d

)

  1. Выполняем миграции внутри контейнера web
sudo docker-compose exec web python manage.py migrate

или

sudo docker compose exec web python manage.py migrate
  1. Собираем статику
sudo docker-compose exec web python manage.py collectstatic

или

sudo docker compose exec web python manage.py collectstatic
  1. Открываем проект по адресу http://localhost/api/v1
    или его административную часть по адресу http://localhost/admin/

При необходимости наполняем базу резервными данными 8. Узнаем id контейнера (web), в который нужно скопировать дамп

sudo docker ps
  1. Копируем дамп в контейнер web
sudo docker cp fixtures.json <CONTAINER_ID>:app/
  1. Заливаем данные в базу
sudo docker-compose exec web python manage.py loaddata fixtures.json

или

sudo docker compose exec web python manage.py loaddata fixtures.json
  1. Удаляем дамп из контейнера
sudo docker-compose exec web rm ./fixtures.json

или

sudo docker compose exec web rm ./fixtures.json

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

Регистрация

Для получения кода подтверждения необходимо отправить POST запрос к эндпоинту http:///api/v1/auth/signup/, в теле запроса указать:

{
"email": "user@example.com",
"username": "user"
}

При успешном завершении запроса вы получите письмо с кодом подтверждения (confirmation_code) на адрес email

Для получения токена необходимо отправить POST запрос к эндпоинту http:///api/v1/auth/token/, в теле запроса указать:

{
"username": "user",
"confirmation_code": "string"
}

При успешном завершении запроса вы получите в ответ токен:

{
"token": "string"
}

Формат запросов

Запрос осуществляется посредством протокола HTTP 1.1 на адрес, соответствующий ресурсу. HTTP-запросы должны содержать заголовок: Authorization: Bearer <access_token>

Формат ответа

Ответ сервиса представляет собой JSON-документ в кодировке UTF-8, содержимое зависит от запроса.

Ресурсы

Ресурс - часть системы, с которой можно работать. В YaMDb ресурсами являются: категории, жанры, произведения, отзывы, комментарии, пользователи. У каждого ресурса уникальный URL. Для получения списка доступных ресурсов выполните GET-запрос к корневому URL API http:///api/v1/, а также к URL: http:///api/v1/titles/{title_id}/reviews/ и http:///api/v1/titles/{title_id}/reviews/{review_id}/comments/

Возможные ресурсы API:

/api/v1/categories/ (GET, POST)
/api/v1/categories/{slug}/ (DELETE)
/api/v1/genres/ (GET, POST)
/api/v1/genres/{slug}/ (DELETE)
/api/v1/titles/ (GET, POST)
/api/v1/titles/{titles_id}/ (GET, PATCH, DELETE)
/api/v1/titles/{title_id}/reviews/ (GET, POST)
/api/v1/titles/{title_id}/reviews/{review_id}/ (GET, PATCH, DELETE)
/api/v1/titles/{title_id}/reviews/{review_id}/comments/ (GET, POST)
/api/v1/titles/{title_id}/reviews/{review_id}/comments/{comment_id}/ (GET, PATCH, DELETE)
/api/v1/users/ (GET, POST)
/api/v1/{username}/ (GET, PATCH, DELETE)
/api/v1/users/me/ (GET, PATCH)

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

Автор yamdb_final: Мария Лапикова (Михайлова), mashik_p@mail.ru
Авторы YaMDb: Шовтюк Елена, Лапикова (Михайлова) Мария, Пиголкин Андрей

About

Сервис сбора и просмотра отзывов на художественные произведения

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /