An open API service indexing awesome lists of open source software.

https://github.com/herrshneider/api_yamdb_group


https://github.com/herrshneider/api_yamdb_group

api django django-framework django-rest-framework python3 rest-api

Last synced: over 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# API Yamdb

# Учебный проект.

## Проект YaMDb собирает отзывы пользователей на произведения.

Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Произведения делятся на категории, такие как «Книги», «Фильмы», «Музыка». Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Жуки» и вторая сюита Баха. Список категорий может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).
Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»).
Добавлять произведения, категории и жанры может только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.
Пользователи могут оставлять комментарии к отзывам.
Добавлять отзывы, комментарии и ставить оценки могут только аутентифицированные пользователи.

Целью проекта является закрепление знаний в области создания REST API на базе Django-проекта.

В проекте реализованы возможности:
- регистрация пользователей;
- CRD для категорий произведений;
- CRD для жанров произведений;
- CRUD для произведений (метод PUT не поддерживается);
- CRUD для отзывов (метод PUT не поддерживается);
- CRUD для комментариев на отзывы (метод PUT не поддерживается);
- CRUD для пользователей (метод PUT не поддерживается);
- получение данных о своей учетной записи / обновление данных своей учетной записи.

Алгоритм регистрации пользователей
Пользователь отправляет POST-запрос на добавление нового пользователя с параметрами email и username на эндпоинт /api/v1/auth/signup/.
YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.
Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен).
При желании пользователь отправляет PATCH-запрос на эндпоинт /api/v1/users/me/ и заполняет поля в своём профайле (описание полей — в документации).

Пользовательские роли:
Аноним — может просматривать описания произведений, читать отзывы и комментарии.
Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям (фильмам/книгам/песенкам), может комментировать чужие отзывы; может редактировать и удалять свои отзывы и комментарии. Эта роль присваивается по умолчанию каждому новому пользователю.
Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять любые отзывы и комментарии.
Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
Суперюзер Django — обладет правами администратора (admin)

Стэк: Python 3.9.10 / Django 3.2 / djangorestframework 3.12.4

Установка:

Клонировать репозиторий и перейти в него в командной строке:

```
git clone git@github.com:fluegergehaimer/api_yamdb.git
```
Перейти в папку с проектом:
```
cd api_yamdb
```
Cоздать и активировать виртуальное окружение:

```
python3 -m venv env
```

```
source env/bin/activate
```

Установить зависимости из файла requirements.txt:

```
python3 -m pip install --upgrade pip
```

```
pip install -r requirements.txt
```

Перейти в корневую папку:
```
cd api_yamdb
```

Выполнить миграции:

```
python3 manage.py migrate
```

Запустить проект:

```
python3 manage.py runserver
```
Документация по API доступна при запущенном сервере по:

[Redoc](http://127.0.0.1:8000/redoc/)

Для иморта данных из CSV файлов в БД воспользуйтесь коммандой:
```
python3 manage.py import_csv
```

Авторы:

[Чередниченко Никита](https://github.com/fluegergehaimer)

[Ласовский Владимир](https://github.com/herrShneider?tab=repositories)