https://github.com/sevastiandolbilin/api_yamdb
api_yamdb
https://github.com/sevastiandolbilin/api_yamdb
django django-framework django-rest-framework pytest python simple-jwt sqlite
Last synced: about 2 months ago
JSON representation
api_yamdb
- Host: GitHub
- URL: https://github.com/sevastiandolbilin/api_yamdb
- Owner: SevastianDolbilin
- Created: 2024-09-30T17:18:30.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-03-29T12:44:52.000Z (about 1 year ago)
- Last Synced: 2025-09-09T05:09:44.304Z (10 months ago)
- Topics: django, django-framework, django-rest-framework, pytest, python, simple-jwt, sqlite
- Language: Python
- Homepage:
- Size: 82 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Проект YaMDb
## Описание
**YaMDb** — это проект, который собирает отзывы пользователей на произведения различных категорий. Проект позволяет пользователям делиться мнениями о книгах, фильмах, музыке и других видах произведений. При этом сами произведения на платформе не хранятся. Пользователи могут оставлять текстовые отзывы, ставить оценки и комментировать чужие отзывы.
## Основная функциональность проекта
- **Категории произведений**: произведения делятся на категории, такие как "Книги", "Фильмы", "Музыка". Категории можно расширять.
- **Жанры произведений**: к произведению можно привязать жанр из предустановленного списка (например, "Рок", "Фантастика", "Артхаус").
- **Рейтинги**: пользователи могут оставлять отзывы с оценками от 1 до 10, на основе которых вычисляется усреднённая оценка произведения.
- **Комментарии**: пользователи могут оставлять комментарии к отзывам.
- Управление доступом через **права пользователя**.
Роли пользователей:
- **Аноним**: может только читать произведения, отзывы и комментарии.
- **Аутентифицированный пользователь**: может публиковать отзывы, ставить оценки произведениям, оставлять комментарии, а также редактировать и удалять свои отзывы и комментарии.
- **Модератор**: имеет права на редактирование и удаление любых отзывов и комментариев.
- **Администратор**: может управлять всеми данными проекта, в том числе добавлять произведения, категории и жанры, а также управлять пользователями и назначать им роли.
## Установка
Чтобы развернуть проект локально, выполните следующие шаги:
0. Клонируйте репозиторий:
```bash
git clone https://github.com/ShiroyashaSG/api_yamdb.git
```
1. Перейдите в директорию проекта:
```bash
cd api_yamdb
```
2. Cоздайте и активируйте виртуальное окружение:
```bash
python -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
```
3. Установите зависимости из файла requirements.txt:
```bash
python3 -m pip install --upgrade pip
pip install -r requirements.txt
```
4. Создайте миграции:
```bash
python3 manage.py makemigrations
```
5. Примените миграции:
```bash
python3 manage.py migrate
```
6. Загрузите данные из csv - файлов в базу данных:
```bash
python3 manage.py import_data
```
7. Запустите сервер:
```bash
python3 manage.py runserver
```
## Примеры запросов к API
### Получение списка произведений
***GET*** запрос на **/api/v1/titles/**
_Ответ:_
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "Винни-Пух и все-все-все",
"year": 1969,
"rating": 9,
"description": "Добрая книга о приключениях медвежонка",
"genre": [
{
"name": "Сказка",
"slug": "skazka"
}
],
"category": {
"name": "Книги",
"slug": "books"
}
}
]
}
```
### Добавление отзыва на произведение
***POST*** запрос на **/api/v1/titles/{title_id}/reviews/**
_Тело запроса:_
```json
{
"text": "Замечательная книга!",
"score": 9
}
```
_Ответ:_
```json
{
"id": 1,
"text": "Замечательная книга!",
"author": "user123",
"score": 9,
"pub_date": "2024-01-01T00:00:00Z"
}
```
### Получение комментариев к отзыву
***GET*** запрос на **/api/v1/titles/{title_id}/reviews/{review_id}/comments/**
_Ответ:_
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"text": "Полностью согласен!",
"author": "user456",
"pub_date": "2024-01-02T12:34:56Z"
}
]
}
```
### Регистрация пользователя
***POST*** запрос на **/api/v1/auth/signup/**
_Тело запроса:_
```json
{
"email": "user@example.com",
"username": "user123"
}
```
_Ответ:_
```json
{
"email": "user@example.com",
"username": "user123"
}
```
### Получение JWT-токена
***POST*** запрос на **/api/v1/auth/token/**
_Тело запроса:_
```json
{
"username": "user123",
"confirmation_code": "123456"
}
```
_Ответ:_
```json
{
"token": "your.jwt.token"
}
```
## Используемые технологии
* Python 3.9.0
* Django 3.2
* Фреймворк Django REST
* Simple JWT для аутентификации
* SQLite (по умолчанию)
## Лицензия
Проект лицензирован под лицензией `MIT`.