Сервис YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»). Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Насекомые» и вторая сюита Баха. Произведению может быть присвоен жанр (Genre) из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.
- Python 3.8
- Django 3.2
- Django Rest Framework
- Simple-JWT
- PostreSQL
http://127.0.0.1:8000/redoc/
Склонировать репозиторий
git clone [email protected]:lanazzk/api_yamdb.git
Создать и активировать виртуальное окружение
python -m venv venv
source venv\bin\activate
Создать и активировать виртуальное окружение
python -m venv venv
source venv\bin\activate
Обновить pip
python -m pip install --upgrade pip
Установить зависимости из файла requirements.txt
pip install -r requirements.txt
Выполнить миграции
python manage.py migrate
Запустить сервер
python manage.py runserver
Получить код подтверждения на переданный email.Поля email и username должны быть уникальными.
POST /auth/signup/
{
"email": "string",
"username": "string"
}
Получение JWT-токена в обмен на username и confirmation code.
POST auth/token/
{
"username": "Ваш логин",
"confirmation_code": "Код подтверждения"
}
{
"token": "Токен для авторизации на сервисе"
}Создать категорию.
Права доступа: Администратор. Поле slug каждой категории должно быть уникальным.
POST /categories/
json
{
"name": "string",
"slug": "string"
}
Удалить категорию.
Права доступа: Администратор.
DELETE /categories/{slug}
Получение списка всех произведений.
Права доступа: Доступно без токена
GET /titles/
[
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
Добавление нового отзыва
Права доступа: Аутентифицированные пользователи.
POST /titles/{title_id}/reviews/
{
"text": "string",
"score": 1
}
Ответ
{
"id": 0,
"text": "string",
"author": "string",
"score": 1,
"pub_date": "2019-08-24T14:15:22Z"
}
Полный список можно посмотреть в документации.
http://127.0.0.1:8000/redoc/
Виталий - система аутентификации, авторизации, управление доступом пользователей.
Светлана - категории (Categories), жанры (Genres) и произведения (Titles): модели, представления и эндпойнты для них, определяет права доступа для запросов.
Максим - отзывы (Review) и комментарии (Comments): модели, представления, настраивает эндпойнты, определяет права доступа для запросов. рейтинги произведений.