REST API для сервиса YaMDb — базы отзывов о фильмах, книгах и музыке.
Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Произведению может быть присвоен жанр. Новые жанры может создавать только администратор. Читатели оставляют к произведениям текстовые отзывы и выставляют произведению рейтинг (оценку в диапазоне от одного до десяти). Из множества оценок автоматически высчитывается средняя оценка произведения.
Аутентификация по JWT-токену
Поддерживает методы GET, POST, PUT, PATCH, DELETE
Предоставляет данные в формате JSON
Cоздан в команде из трёх человек с использованим Git в рамках учебного курса Яндекс.Практикум.
- проект написан на Python с использованием Django REST Framework
- библиотека Simple JWT - работа с JWT-токеном
- библиотека django-filter - фильтрация запросов
- базы данны - SQLite3 и PostgreSQL
- система управления версиями - git
- Клонируйте репозитроий с проектом:
git clone https://github.com/leks20/yamdb
- В созданной директории установите виртуальное окружение, активируйте его и установите необходимые зависимости:
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
-
Создайте в директории файл .env и поместите туда SECRET_KEY, необходимый для запуска проекта
- сгенерировать ключ можно на сайте Djecrety
-
Выполните миграции:
python manage.py migrate
- Cоздайте суперпользователя:
python manage.py createsuperuser
- Загрузите тестовые данные:
python manage.py loaddata fixtures.json
- Запустите сервер:
python manage.py runserver
Ваш проект запустился на http://127.0.0.1:8000/
Полная документация (redoc.yaml) доступна по адресу http://127.0.0.1:8000/redoc/
С помощью команды pytest вы можете запустить тесты и проверить работу модулей
- Пользователь отправляет запрос с параметрами email и username на /auth/email/.
- YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email .
- Пользователь отправляет запрос с параметрами email и confirmation_code на /auth/token/, в ответе на запрос ему приходит token (JWT-токен).
- Ресурс AUTH: аутентификация.
- Ресурс USERS: пользователи.
- Ресурс TITLES: произведения, к которым пишут отзывы (определённый фильм, книга или песня).
- Ресурс CATEGORIES: категории (типы) произведений («Фильмы», «Книги», «Музыка»).
- Ресурс GENRES: жанры произведений. Одно произведение может быть привязано к нескольким жанрам.
- Ресурс REVIEWS: отзывы на произведения. Отзыв привязан к определённому произведению.
- Ресурс COMMENTS: комментарии к отзывам. Комментарий привязан к определённому отзыву.
url = 'http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/comments/'
data = {'text': 'Your comment'}
headers = {'Authorization': 'Bearer your_token'}
request = requests.post(url, data=data, headers=headers)
Статус- код 200
{
"id": 0,
"text": "string",
"author": "string",
"pub_date": "2020-08-20T14:15:22Z"
}