Проект YaMDb создан студентами 4-го тимворка в рамках выполнения спринта 10 в Яндекс Практикум.
YaMDb собирает отзывы пользователей на различные произведения.
- Произведения делятся на категории: «Книги», «Фильмы», «Музыка».
- Произведению может быть присвоен жанр из списка предустановленных.
- Пользователи могут оставить к произведениям текстовые отзывы и поставить произведению оценку в диапазоне от одного до десяти, из пользовательских оценок формируется усреднённая оценка произведения — рейтинг. На одно произведение пользователь может оставить только один отзыв.
В проекте YaMDb реализована ролевая модель управления доступами. Доступные роли и права пользователей:
- Аноним — может просматривать описания произведений, читать отзывы и комментарии.
- Аутентифицированный пользователь (user) — может читать всё, как и Аноним, может публиковать отзывы и ставить оценки произведениям (фильмам/книгам/песенкам), может комментировать отзывы; может редактировать и удалять свои отзывы и комментарии, редактировать свои оценки произведений. Эта роль присваивается по умолчанию каждому новому пользователю.
- Модератор (moderator) — те же права, что и у Аутентифицированного пользователя, плюс право удалять и редактировать любые отзывы и комментарии.
- Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.
- Суперюзер Django обладает правами администратора, пользователя с правами admin.
Клонируем репозиторий:
git clone https://github.com/whoishacked/api_yamdb/
Переходим в папку с проектом:
cd api_yamdb
Устанавливаем и активируем venv:
python3 -m venv venv
source venv/bin/activate
Устанавливаем pip:
python3 -m pip install --upgrade pip
Устанавливаем зависимости:
pip install -r requirements.txt
Создаем миграции:
python manage.py makemigrations
Выполняем миграции:
python manage.py migrate
используем следующую команду для установки демо-данных из таблиц csv, которые
находятся в папке static/data/
проекта:
python manage.py load_csv_data
Запускаем проект:
python3 manage.py runserver
Проект будет доступен по адресу:
http://127.0.0.1:8000/
В проекте YaMDb предусмотрен API. Ниже доступны некоторые примеры его использвания.
Регистрация новых пользователей:
POST /api/v1/auth/signup/
{
"email": "string",
"username": "string"
}
Получить список всех категорий:
GET /api/v1/categories/
[
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"name": "string",
"slug": "string"
}
]
}
]
Произведения, к которым пишут отзывы:
GET /api/v1/titles/
[
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
]
}
]
Добавить новый отзыв:
POST /api/v1/titles/{title_id}/reviews/
{
"text": "string",
"score": 1
}
Более подробную информацию об использовании API можно найти на странице:
http://127.0.0.1:8000/redoc/
Краткий список:
- Django 2.2.16
- PyJWT 2.1.0
- djoser 2.1.0
- djangorestframework 3.12.4
Полный список доступен в requirements.txt
Ершов Виталий
Кутузов Андрей:
- Telegram: @andrewkutuzov
- Email: [email protected]
Малых Денис