Реализация API для сайта "YaMDb". Собирает отзывы пользователей на различные произведения.
Основные возможности:
- любой пользователь, даже анонимный, может просматривать описания произведений, читать отзывы и комментарии;
- авторизованные пользователи (
user
) может читать всё, может публиковать отзывы и ставить оценки произведениям (фильмам/книгам/песням), может комментировать отзывы; может редактировать и удалять свои отзывы и комментарии, редактировать свои оценки произведений. Эта роль присваивается по умолчанию каждому новому пользователю; - модератор (
moderator
) те же права, что и у аутентифицированного пользователя, плюс право удалять и редактировать любые отзывы и комментарии; - администратор (
admin
) полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям; - суперюзер
Django
обладает правами администратора, пользователя с правамиadmin
. Даже если изменить пользовательскую роль суперюзера — это не лишит его прав администратора. Суперюзер — всегда администратор, но администратор — не обязательно суперюзер.
Проект является учебным. Основная польза в приобретении понимания реализации API
через Django REST Framework
, с использованием:
- созданной системы
JWT-токенов
без использования библиотеки 'djoser'; ViewSet
,mixins
иGenericViewSet
;- валидации данных, реализованных в
serializers
иmodels
; - настроек пагинации для публикаций;
- локализации
API Response
ошибок; - механизма отправки письма с кодом подтверждения на
email
; - кастомной фильтрации произведений через
filterset_class
; - комбинации
ViewSet
иView-класс
для ограничения методов -CRUD
; - настроенной системы загрузки фалов
CSV
в базу данных проекта.
Руководство по развёртыванию проекта
GitHub | Автор проекта - Yandex Practicum
GitHub | Тимлид - Andrew Fedorchenko
GitHub | Разработчик - Vladimir Avizhen
GitHub | Наставник - Nikolay Minyakin
GitHub | Ревьюер - Evgeniy Salahutdinov