Проект YaMDB собирает отзывы пользователей на произведения (книги, фильмы, музыку). Сами произведения здесь не хранятся. Незарегистрированные пользователи могут просматривать информацию о произведениях, жанрах и категориях произведений, а также читать отзывы и комментарии. Зарегистрированные пользователи могут оставлять отзывы и комментарии на произведения, а также выставлять оценку от 1 до 10. Право добавлять произведения, жанры и категории есть только у администраторов проекта.
-
http://127.0.0.1:8000/api/v1/auth/signup/
POST-запрос — получение кода подтверждения (confirmation_code) на указанный email. -
http://127.0.0.1:8000/api/v1/auth/token/
POST-запрос — получение Access-токена в обмен на username и confirmation_code. -
http://127.0.0.1:8000/api/v1/users/
Доступно для пользователей с ролью "администратор". GET-запрос — получение списка всех пользователей, POST-запрос — добавление нового пользователя. -
http://127.0.0.1:8000/api/v1/users/{username}/
Доступно для пользователей с ролью "администратор". GET-запрос — получение пользователя по username. PATCH-запрос — редактирование данных пользователя. DELETE-запрос — удаление пользователя. -
http://127.0.0.1:8000/api/v1/users/me/
Права доступа — любой зарегистрированный пользователь. GET-запрос — получение данных о своей учётной записи. PATCH-запрос — редактирование своей учётной записи. Изменить роль пользователя нельзя. -
http://127.0.0.1:8000/api/v1/categories/
GET-запрос — получение списка всех категорий (доступно без токена). POST-запрос — создание новой категории (доступно для администратора). -
http://127.0.0.1:8000/api/v1/categories/{slug}/
Доступно для пользователей с ролью "администратор". DELETE-запрос — удаление категории по её slug. -
http://127.0.0.1:8000/api/v1/genres/
GET-запрос — получение списка всех жанров (доступно без токена). POST-запрос — добавление нового жанра (доступно для администратора). -
http://127.0.0.1:8000/api/v1/genres/{slug}/
Доступно для пользователей с ролью "администратор". DELETE-запрос — удаление жанра по его slug. -
http://127.0.0.1:8000/api/v1/titles/
GET-запрос — получение списка всех произведений (доступно без токена). POST-запрос — добавление нового произведения (доступно для администратора). -
http://127.0.0.1:8000/api/v1/titles/{titles_id}/
GET-запрос — получение информации о произведении (доступно без токена). PATCH-запрос — обновление информации о произведении (доступно для администратора). DELETE-запрос — удаление произведения (доступно для администратора). -
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/
GET-запрос — получение списка всех отзывов (доступно без токена). POST-запрос — добавление нового отзыва (доступно для аутентифицированных пользователей). Пользователь может оставить один отзыв на произведение. -
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/
GET-запрос — получение отзыва о произведении по его id (доступно без токена). PATCH-запрос — изменение отзыва (доступно для администратора, модератора и автора отзыва). DELETE-запрос — удаление отзыва по id (доступно для модератора, администратора и автора отзыва). -
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/comments/
GET-запрос — получение списка комментариев к отзыву (доступно без токена). POST-запрос — добавление комментария к отзыву (доступно для аутентифицированных пользователей). -
http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/comments/{comment_id}/
GET-запрос — получение информации о комментарии по id (доступно без токена). PATCH-запрос — частичное обновление комментария (доступно для администратора, модератора и автора комментария). DELETE-запрос — удаление комментария (доступно для администратора, модератора и автора комментария).
Клонировать репозиторий и перейти в него в командной строке:
git clone https://github.com/mariyabykova/api_yamdb
cd api_yamdb
Cоздать и активировать виртуальное окружение:
python3 -m venv venv
-
Если у вас Linux/macOS
source venv/bin/activate
-
Если у вас windows
source venv/scripts/activate
python3 -m pip install --upgrade pip
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
Выполнить миграции:
python3 manage.py migrate
Запустить проект:
python3 manage.py runserver
Предусмотрены два способа загрузки данных из csv-файлов:
- Через админ-панель (использована библиотека django-import-export).
- С помощью 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
Мария Быкова. Тимлид. Регистрация и авторизация, управление пользователями, права доступа.
Михаил Буланкин. Произведения, категории, жанры, импорт csv-файлов.
Владислав Гордин. Отзывы, комментарии, рейтинг произведений.