- Описание проекта
- Технологический стек
- Как развернуть проект
- Шаблон наполнения файла .env
- Запуск приложения
- Примеры работы с проектом
- Инструкции для накачки базы из CSV-файлов
- Над проектом работали
Проект собирает отзывы пользователей о различных произведениях искусства. Он классифицирует эти произведения по различным типам, таким как "Книги", "Фильмы" и "Музыка". Платформа не хранит сами произведения, она предназначена исключительно для сбора отзывов. Пользователи могут оставлять текстовые отзывы и оценивать произведения по шкале от одного до десяти. Каждый пользователь может оставить только один отзыв на каждое произведение. Только авторизованные пользователи могут оставлять отзывы, комментарии и оценки. Произведения могут быть связаны с жанрами, и администраторы имеют исключительные права на добавление произведений, категорий и жанров.
- Аноним: может просматривать описания работ, читать отзывы и комментарии.
- Аутентифицированный пользователь (user): наследует все права Anonymous, может размещать обзоры, оценивать работы и комментировать обзоры. Он также может редактировать или удалять свои отзывы, комментарии и оценки.
- Модератор (moderator): наследует все права Пользователя плюс возможность редактировать или удалять любые отзывы и комментарии.
- Администратор (admin): полные права на управление содержимым проекта, включая создание и удаление произведений, категорий и жанров. Он также может назначать роли пользователям.
- Суперюзер Django (Django Superuser): всегда имеет права администратора, независимо от установленной роли пользователя.
Пользователи могут самостоятельно зарегистрироваться, отправив POST-запрос с указанием электронной почты и имени пользователя. На электронную почту высылается код подтверждения, который, будучи подтвержденным, предоставляет пользователю JWT-токен. После регистрации пользователь может заполнить данные своего профиля.
При удалении пользователя удаляются также все его отзывы и комментарии. При удалении произведения удаляются все связанные с ним отзывы и комментарии, но удаление категории или жанра не приводит к удалению связанных с ними произведений. База данных может быть заполнена данными из предоставленных csv-файлов, которые можно импортировать с помощью собственной команды управления на Django.
Клонировать репозиторий и перейти в него в терминале используя команду
cd
git clone git@github.com:aleksandr-miheichev/review_ratings_platform.git
Создать и активировать виртуальное окружение:
python -m venv venv
source venv/Scripts/activate
Установить зависимости из файла requirements.txt:
pip install -r requirements.txt
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=xxyyzz
DB_HOST=db
DB_PORT=5432
Чтобы запустить модуль, необходимо в терминале перейти в папку api_yamdb
:
cd .\api_yamdb\
Далее необходимо применить миграции:
python manage.py migrate
После этого осуществить запуск приложения:
python manage.py runserver
Далее отрыть сайт с проектом перейдя по ссылке:
Удобную веб-страницу со справочным меню, документацией для эндпоинтов и разрешённых методов, с примерами запросов, ответов и кода Вы сможете посмотреть по адресу:
Для загрузки данных, получаемых вместе с проектом, из файлов csv в базу данных через Django ORM была написана собственная management-команда.
Увидеть её описание Вы сможете, открыв папку:
api_yamdb/api_yamdb
В терминале и далее введя команду:
python manage.py data_loading -h
Для выполнения процедуры загрузки в базу данных необходимо выполнить:
python manage.py data_loading
В случае успешного выполнения данной процедуры будет выведено сообщение в терминал:
Database successfully loaded into models!
При отсутствии csv файла с данными или его неправильного наименования будет выведена ошибка:
Sorry, the file "<название_файла>" does not exist.
При необходимости внести корректировки в данную management-команду Вы сможете найдя её исполняющий файл в папке:
api_yamdb/api_yamdb/reviews/management/commands/data_loading.py