Платформа YaMDb собирает отзывы пользователей на произведения. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Произведения делятся на основные категории, такие как «Книги», «Фильмы», «Музыка», но список категорий может быть расширен администратором.
Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»).
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв. Пользователи могут оставлять комментарии к отзывам.
Незарегистрированные пользователи могут просматривать информацию о произведениях, жанрах и категориях произведений, а также читать отзывы и комментарии. Зарегистрированные пользователи могут так же могут оставлять отзывы,комментарии и оценки произведениям. Добавлять, изменять произведения, категории и жанры может только администратор.
- Python 3.7
- Django 2.2.28
- DRF
- JWT
Клонировать репозиторий и перейти в него в командной строке:
html git clone git@github.com:ShelepovNikita/api_yamdb.git
cd api_yamdb
Cоздать и активировать виртуальное окружение:
python3 -m venv env
Если у вас Linux/macOS
source env/bin/activate
Если у вас windows
env/scripts/activate.bat
Обновить pip
python3 -m pip install --upgrade pip
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
Выполнить миграции:
python3 manage.py migrate
Запустить проект:
python3 manage.py runserver
Документация проекта доступна по адресу:
http://127.0.0.1:8000/redoc/
С помощью management-команд. Для того, чтобы загрузить все данные, из корневой директории проекта выполните команду: python3 manage.py load_data_csv --use_default_dataset
Чтобы загрузить данные из определённого файла для конкретной модели, выполните команду:
python3 manage.py load_data_csv --path <путь к csv-файлу> --model_name <имя модели> --app_name <название приложения>
Например, для импорта данных о пользователях из файла 'users.csv' команда будет следующей:
python3 manage.py load_data_csv --path static/data/users.csv --model_name user --app_name users
Данные из файлов необходимо загружать в следующем порядке:
- users.csv
- genre.csv
- category.csv
- titles.csv
- genre_title.csv
- review.csv
- comments.csv
Пользователь отправляет 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/
и заполняет поля в своём профайле (описание полей — в документации).
Получение списка всех категорий:
http://127.0.0.1:8000/api/v1/categories/
Получение списка всех жанров:
http://127.0.0.1:8000/api/v1/genres/
Получение списка всех произведений:
http://127.0.0.1:8000/api/v1/titles/
Получение списка всех отзывов:
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
Получение списка всех комментариев к отзыву:
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/1/comments/
Проект написан в рамках группового проекта учебного курса Яндекс.Практикум - Python-разработчик.
ShelepovNikita - Шелепов Никита (teamlead)
terrazavr - Юнусова Диляра
AlexAsmaev - Асмаев Александр