Проект создан в рамках обучения Django на факультете Бэкенд. Когорта №9+ Яндекс.Практикум.
Использованы следующие технологии и пакеты:
- 🔭 requests
- 🔭 djangorestframework
- 🔭 PyJWT
- 🔭 pytest
- 🔭 pytest-django
- 🔭 pytest-pythonpath
- 🔭 python-dotenv
- 🔭 djangorestframework-simplejwt
- 🔭 django-filter
Проект «YaMDb» собирает отзывы пользователей на различные произведения.
Проект доступен анонимным и аутентифицированным пользователям. В данном проекте используется аутентификация по JWT-токену.
Функционал API:
- Работа с отзывами:
- Получение списка всех отзывов. Позволяет получить список всех отзывов.
Права доступа: Доступно без токена;
- Добавление нового отзыва. Позволяет добавить новый отзыв. Пользователь может оставить только один отзыв на произведение.
Права доступа: Аутентифицированные пользователи;
- Получение отзыва по id. Позволяет получить отзыв по id для указанного произведения. Права доступа: Доступно без токена;
- Частичное обновление отзыва по id. Позволяет частичное обновить отзыв по id. Права доступа: Автор отзыва, модератор или администратор.;
- Удаление отзыва по id. Позволяет удалить отзыв по id.
Права доступа: Автор отзыва, модератор или администратор.
- Работа с комментариями:
- Получение списка всех комментариев к отзыву. Позволяет получить список всех комментариев к отзыву. Права доступа: Доступно без токена;
- Добавление комментария. Позволяет добавить новый комментарий для отзыва. Права доступа: Аутентифицированные пользователи;
- Получение комментария к отзыву. Позволяет получить комментарий для отзыва по id. Права доступа: Доступно без токена;
- Частичное обновление комментария к отзыву. Позволяет частично обновить комментарий к отзыву по id. Права доступа: Автор комментария, модератор или администратор;
- Удаление комментария к отзыву. Позволяет удалить комментарий к отзыву по id. Права доступа: Автор комментария, модератор или администратор.
- Работа с категориями:
- Получение списка всех категорий. Позволяет получить список всех категорий. Права доступа: Доступно без токена;
- Добавление новой категории. Позволяет создать категорию. Права доступа: Администратор;
- Удаление категории. Позволяет удалить категорию. Права доступа: Администратор.
- Работа с категориями жанров:
- Получение списка всех жанров. Позволяет получить список всех жанров. Права доступа: Доступно без токена;
- Добавление жанра. Позволяет добавить жанр. Права доступа: Администратор;
- Удаление жанра. Позволяет удалить жанр. Права доступа: Администратор.
- Работа с произведениями, к которым пишут отзывы (определённый фильм, книга или песенка)
- Получение списка всех произведений. Позволяет получить список всех объектов. Права доступа: Доступно без токена;
- Добавление произведения. Позволяет добавить новое произведение. Права доступа: Администратор.
Нельзя добавлять произведения, которые еще не вышли (год выпуска не может быть больше текущего).
При добавлении нового произведения требуется указать уже существующие категорию и жанр;
- Получение информации о произведении. Позволяет получит информацию о произведении. Права доступа: Доступно без токена;
- Частичное обновление информации о произведении. Позволяет обновить информацию о произведении. Права доступа: Администрато;
- Удаление произведения. Позволяет удалить произведение. Права доступа: Администратор.
- Работа с пользователями:
- Получение списка всех пользователей. Позволяет получить список всех пользователей. Права доступа: Администратор;
- Добавление пользователя. Позволяет добавить нового пользователя. Права доступа: Администратор.
Поля email и username должны быть уникальными;
- Получение пользователя по username. Позволяет получить пользователя по username. Права доступа: Администратор;
- изменение данных пользователя по username. Позволяет изменить данные пользователя по username.
Права доступа: Администратор. Поля email и username должны быть уникальными.
git clone https://github.com/Victor-Manin/api_yamdb.git
cd api_final_yatube
python3 -m venv env
source env/bin/activate
python3 -m pip install --upgrade pip
pip install -r requirements.txt
python3 manage.py migrate --run-syncdb
создать файл .env в директории, которая содержит файл manage.py. В файле указать SECRET_KEY,
SECRET_KEY = 'p&l%385148kslhtyn^##a1)ilz@4zqj=rq&agdol^##zgl9(vs'
python3 manage.py runserver
Для загрузки данных в пустую базу используйте команду
python3 manage.py import_csv
Если необходимо снова загрузить данные из CSV файлов, сначала удалите файо db.sqlite3 для очистки базы данных.
Затем запустите python3 manage.py migrate --run-syncdb для создания пустой базы данных с таблицами