Проект для публикаций отзывов пользователей на произведения. Категории произведений: «Книги», «Фильмы», «Музыка». Список категорий расширяемый.
Читатели оставляют к произведениям текстовые отзывы (Review) и выставляют рейтинг (оценку в диапазоне от 1 до 10).
Полная документация к API находится по эндпоинту: /redoc
- Python 3.7
- Django 2.2.28
- DRF
- JWT
- Клонировать репозиторий и перейти в него в командной строке.
- Установить и активировать виртуальное окружение c Python 3.7 (python не ниже версии 3.7):
python3 -3.7 -m venv venv
source venv/Scripts/activate
- Установить зависимости из файла requirements.txt
python3 -m pip install --upgrade pip
pip install -r requirements.txt
- Выполнить миграции:
python3 manage.py migrate
- Создать суперпользователя:
python3 manage.py createsuperuser
- Запустить проект:
python3 manage.py runserver
Документация доступна по эндпоинту: /redoc/
Для неавторизованных пользователей работа с API доступна в режиме чтения, что-либо изменить или создать не получится.
Права доступа: Доступно без токена.
GET /api/v1/categories/ - Получение списка всех категорий
GET /api/v1/genres/ - Получение списка всех жанров
GET /api/v1/titles/ - Получение списка всех произведений
GET /api/v1/titles/{title_id}/reviews/ - Получение списка всех отзывов
GET /api/v1/titles/{title_id}/reviews/{review_id}/comments/ - Получение списка всех комментариев к отзыву
Права доступа: Администратор
GET /api/v1/users/ - Получение списка всех пользователей
- Суперюзер Django — обладает правами администратора (admin)
- Администратор (admin) — полные права на управление всего контента проекта. Возможность создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
- Модератор (moderator) — те же права, что и у Аутентифицированного пользователя, а так же возможность удалять любые отзывы и комментарии.
- Аноним — может просматривать описания произведений, читать отзывы и комментарии.
- Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям ( фильмам/книгам/песенкам), может комментировать отзывы, редактировать и удалять свои отзывы и комментарии.
Получение кода подтверждения на email. Права доступа: Доступно без токена. Недопустимо использовать имя 'me' в качестве username. Email и username должны быть уникальными.
Пример регистрации пользователя:
POST /api/v1/auth/signup/
{
"email": "string",
"username": "string"
}
Получение JWT-токена:
POST /api/v1/auth/token/
{
"username": "string",
"confirmation_code": "string"
}
Добавление категории:
Права доступа: Администратор.
POST /api/v1/categories/
{
"name": "string",
"slug": "string"
}
Удаление категории:
Права доступа: Администратор.
DELETE /api/v1/categories/{slug}/
Добавление жанра:
Права доступа: Администратор.
POST /api/v1/genres/
{
"name": "string",
"slug": "string"
}
Удаление жанра:
Права доступа: Администратор.
DELETE /api/v1/genres/{slug}/
Обновление публикации:
PUT /api/v1/posts/{id}/
{
"text": "string",
"image": "string",
"group": 0
}
Добавление произведения:
Права доступа: Администратор.
Год выпуска не может быть больше текущего года.
POST /api/v1/titles/
{
"name": "string",
"year": 0,
"description": "string",
"genre": [
"string"
],
"category": "string"
}
Добавление произведения:
Права доступа: Доступно без токена
GET /api/v1/titles/{titles_id}/
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
Обновление информации о произведении:
Права доступа: Администратор
PATCH /api/v1/titles/{titles_id}/
{
"name": "string",
"year": 0,
"description": "string",
"genre": [
"string"
],
"category": "string"
}
Список всех пользователей.
Права доступа: Администратор
GET /api/v1/users/
Добавление пользователя:
Права доступа: Администратор
Email и username должны быть уникальными.
POST /api/v1/users/
{
"username": "string",
"email": "user@example.com",
"first_name": "string",
"last_name": "string",
"bio": "string",
"role": "user"
}
Получение пользователя по username:
Права доступа: Администратор
GET /api/v1/users/{username}/
Смена данных username:
Права доступа: Администратор
PATCH /api/v1/users/{username}/
{
"username": "string",
"email": "user@example.com",
"first_name": "string",
"last_name": "string",
"bio": "string",
"role": "user"
}
Удаление пользователя по username:
Права доступа: Администратор
DELETE /api/v1/users/{username}/
Получение данных своей учетной записи:
Права доступа: Любой авторизованный пользователь
GET /api/v1/users/me/
Смена данных своей учетной записи:
- Права доступа: Любой авторизованный пользователь
PATCH /api/v1/users/me/