Цель работы над проектом - получить опыт командной работы.
Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles).
Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором.
Произведению может быть присвоен жанр (Genre) из списка предустановленных. Новые жанры может создавать только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку (от одного до десяти). Из пользовательских оценок формируется усреднённая оценка произведения — рейтинг. На одно произведение пользователь может оставить только один отзыв.
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
- Регистрация нового пользователя
- Получение JWT-токена
- Каждый пользователь имеет свою роль:
- Аноним
- Аутентифицированный пользователь
(user) - Модератор
(moderator) - Администратор
(admin) - Суперюзер Django
- Получение списка всех пользователей
- Получение данных своей учетной записи
- Получение пользователя по username
- Добавление пользователя
- Изменение данных своей учетной записи
- Изменение данных пользователя по username
- Удаление пользователя по username
- Получить список всех публикаций
- Получение информации о произведении
- Добавление произведения
- Частичное обновление информации о произведении
- Удаление произведения
- Получение списка всех категорий
- Добавление новой категории
- Удаление категории
- Получение списка всех категорий
- Добавление жанра
- Удаление жанра
- Получение списка всех отзывов
- Полуение отзыва по id
- Добавление нового отзыва
- Частичное обновление отзыва по id
- Удаление отзыва по id
- Получение списка всех комментариев к отзыву
- Получение комментария к отзыву
- Добавление комментария к отзыву
- Частичное обновление комментария к отзыву
- Удаление комментария к отзыву
-
Клонируем репозиторий на локальную машину:
$ git clone https://github.com/evgeny81d/api_yamdb.git -
Создаём виртуальное окружение и установливаем зависимости:
python -m venv venv pip install -r requirements.txt -
Создаём и применяем миграции:
python manage.py makemigrations python manage.py migrate -
Запускаем сервер django:
python manage.py runserver
curl --location --request POST 'http://127.0.0.1:8000/api/v1/auth/signup/' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "newuseremail@example.com",
"username": "newuser"
}'{
"email": "newuseremail@example.com",
"username": "newuser"
}curl --location --request POST 'http://127.0.0.1:8000/api/v1/auth/token/' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "newuser",
"confirmation_code": "newuser-confirmation-code"
}'{
"token": "jwt_access_token"
}curl --location --request GET 'http://127.0.0.1:8000/api/v1/users/me/' \
--header 'Authorization: Bearer jwt_access_token'{
"username": "newuser",
"email": "newuseremail@example.com",
"first_name": "",
"last_name": "",
"bio": "",
"role": "user"
}- Python 3.7.13,
- Django 2.2.16,
- Django Filter 21.1
- Django REST Framework 3.12.4
- Simple JWT 5.2.0
Чтобы открыть документацию, запустите сервер и
перейдите по ссылке:http://127.0.0.1:8000/redoc/
Евгений Дериглазов | Тимлид. Кастомная модель User, регистрация и аутентификация пользователей.
Александр Гетманов | Разработчик, контент Администратора.
Герман Кабачков | Разработчик, контент пользователей.