https://github.com/excellent-84/api_yamdb
API собирает отзывы пользователей на различные произведения: фильмы, книги и музыка. Реализован на Django REST Framework
https://github.com/excellent-84/api_yamdb
django django-rest-framework python sqlite3
Last synced: about 2 months ago
JSON representation
API собирает отзывы пользователей на различные произведения: фильмы, книги и музыка. Реализован на Django REST Framework
- Host: GitHub
- URL: https://github.com/excellent-84/api_yamdb
- Owner: Excellent-84
- Created: 2023-03-13T10:29:33.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-15T18:25:52.000Z (almost 2 years ago)
- Last Synced: 2025-03-17T22:12:38.450Z (over 1 year ago)
- Topics: django, django-rest-framework, python, sqlite3
- Language: Python
- Homepage:
- Size: 133 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Проект API YaMDb
API YaMDb собирает отзывы пользователей на различные произведения такие как фильмы, книги и музыка.
### Описание проекта:
API YaMDb позволяет работать со следующими сущностями:
- JWT-токен (Auth): отправить confirmation_code на переданный email, получить JWT-токен в обмен на email и confirmation_code;
- Пользователи (Users): получить список всех пользователей, создать пользователя, получить пользователя по username, изменить данные пользователя по username, удалить пользователя по username, получить данные своей учётной записи, изменить данные своей учётной записи;
- Произведения (Titles), к которым пишут отзывы: получить список всех объектов, создать произведение для отзывов, информация об объекте, обновить информацию об объекте, удалить произведение. пользователя по username, получить данные своей учётной записи, изменить данные своей учётной записи;
- Категории (Categories) произведений: получить список всех категорий, создать категорию, удалить категорию;
- Жанры (Genres): получить список всех жанров, создать жанр, удалить жанр;
- Отзывы (Review): получить список всех отзывов, создать новый отзыв, получить отзыв по id, частично обновить отзыв по id, удалить отзыв по id;
- Комментарии (Comments) к отзывам: получить список всех комментариев к отзыву по id, создать новый комментарий для отзыва, получить комментарий для отзыва по id, частично обновить комментарий к отзыву по id, удалить комментарий к отзыву по id.
### Участники проекта:
[Горин Евгений](https://github.com/Excellent-84) - управление пользователями (Auth и Users): система регистрации и аутентификации, права доступа, работа с токеном, система подтверждения e-mail, поля;
[Белов Руслан](https://github.com/BelovRV89) - категории (Categories), жанры (Genres) и произведения (Titles): модели, view и эндпойнты для них;
[Малахов Александр](https://github.com/Richa9d) - отзывы (Review) и комментарии (Comments): модели и view, эндпойнты, права доступа для запросов. Рейтинги произведений.
### Стек технологий:




### Как запустить проект:
* ##### Клонировать репозиторий, перейти в директорию с проектом:
```
git clone https://github.com/Excellent-84/api_yamdb.git
```
* ##### Установить виртуальное окружение, активировать его:
```
cd api_yamdb
python3 -m venv venv
source venv/bin/activate
python3 -m pip install --upgrade pip
```
* ##### Перейти в директорию с приложением api_yamdb, установить зависимости:
```
pip install -r requirements.txt
```
* ##### Выполнить миграции:
```
cd api_yamdb
python3 manage.py migrate
```
* ##### Запустить проект:
```
python3 manage.py runserver
```
* ##### Импорт БД из csv файла:
```
python3 manage.py import_data
```
### Примеры запроса:
#### Регистрация нового пользователя:
POST запрос http://{ip-адрес}/api/v1/auth/signup/
```
{
"email": "user@example.com",
"username": "user"
}
```
##### Ответ:
```
{
"email": "user@example.com",
"username": "user"
}
```
#### Получение JWT-токена:
POST запрос http://{ip-адрес}/api/v1/auth/token/
```
{
"confirmation_code": "str71ddb36c-xxxx-xxxx-xxxx-xxxxxxx",
"username": "user"
}
```
##### Ответ:
```
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.XXXXXXX"
}
```
#### Добавление жанра:
POST запрос http://{ip-адрес}/api/v1/genres/
```
{
"name": "Комедия",
"slug": "comedy"
}
```
##### Ответ:
```
{
"name": "Комедия",
"slug": "comedy"
}
```
#### Получение списка всех жанров:
GET запрос http://{ip-адрес}/api/v1/genres/
##### Ответ
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"name": "Комедия",
"slug": "comedies"
},
{
"name": "Комедия",
"slug": "comedy"
}
]
}
#### Удаление жанра:
DELETE запрос http://{ip-адрес}/api/v1/genres/comedy/
#### Подробную версию запросов можно посмотреть по адресу:
http://{ip-адрес}/redoc/