Skip to content

ShelepovNikita/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект YaMDb

Описание проекта

Платформа YaMDb собирает отзывы пользователей на произведения. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.

Произведения делятся на основные категории, такие как «Книги», «Фильмы», «Музыка», но список категорий может быть расширен администратором.

Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»).

Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв. Пользователи могут оставлять комментарии к отзывам.

Незарегистрированные пользователи могут просматривать информацию о произведениях, жанрах и категориях произведений, а также читать отзывы и комментарии. Зарегистрированные пользователи могут так же могут оставлять отзывы,комментарии и оценки произведениям. Добавлять, изменять произведения, категории и жанры может только администратор.

Технологии использованные в проекте:

  • Python 3.7
  • Django 2.2.28
  • DRF
  • JWT

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

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

html git clone [email protected]: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/

Как импортировать данные из csv-файлов в базу данных

С помощью 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/ и заполняет поля в своём профайле (описание полей — в документации).

Примеры запросов к API:

Получение списка всех категорий:

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 - Асмаев Александр

Releases

No releases published

Packages