Проект YaMDb собирает отзывы пользователей на произведения.
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Каждый ресурс описан в документации: указаны эндпоинты (адреса, по которым можно сделать запрос),
разрешённые типы запросов, права доступа и дополнительные параметры, когда это необходимо.
Добавлять произведения, категории и жанры может только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы
и ставят произведению оценку в диапазоне от одного до десяти (целое число);
из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число).
Добавлять отзывы, комментарии и ставить оценки могут только аутентифицированные пользователи.
* requests==2.26.0
* Django==3.2
* djangorestframework==3.12.4
* PyJWT==2.1.0
* pytest==6.2.4
* pytest-django==4.4.0
* pytest-pythonpath==0.7.3
* djangorestframework-simplejwt==5.2.2
* django-filter==22.1
* python-dotenv==0.21.1
-
Клонировать репозиторий:
git clone ...
-
Перейти в папку с проектом:
cd api_yamdb/
-
Установить виртуальное окружение для проекта:
python -m venv venv
-
Активировать виртуальное окружение для проекта:
# для OS Lunix и MacOS source venv/bin/activate # для OS Windows source venv/Scripts/activate
-
Установить зависимости:
python -m pip install --upgrade pip pip install -r requirements.txt
-
Выполнить миграции на уровне проекта:
cd api_yamdb python manage.py migrate
-
Запустить проект:
python manage.py runserver
-
Клонирование базы. В катологе static/data проекта находятся тестовые файлы базы данных. Для их импорта в базу данных выполняется команда:
python manage.py import_db
-
Каждый ресурс описан в документации проекта:
http://127.0.0.1:8000/redoc/
-
ПО для тестирования API:
https://www.postman.com/
- Пример POST-запроса
Регистрация нового пользователя и получениеconfirmation_code
. Доступно без токена.
POST http://127.0.0.1:8000/api/v1/auth/signup/
{ "email": "[email protected]", "username": "string" }
- Пример ответа:
В проекте настроен filebased способ отправки почты, confirmation_code будет находится в папке send_email базовой директории.
{ "email": "string", "username": "string" }
- Получение JWT-токена в обмен на
username
иconfirmation_code
. Доступно без токена.
POST http://127.0.0.1:8000/api/v1/auth/token/
{ "username": "string", "confirmation_code": "string" }
- Пример ответа:
В дальнейшем token передаётся в Header: Bearer
{ "token": "string" }
- Создание отзыва к произведению. Необходим токен.
POST http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
{ "text": "string", "score": 1 }
- Пример ответа:
{ "id": 0, "text": "string", "author": "string", "score": 1, "pub_date": "2019-08-24T14:15:22Z" }
- Артем Вахрушев
- Роман Дячук
- Руслан Шамсияров