Учебный проект для ЯндексПрактикума.
Проект YaMDb на основе собирает отзывы пользователей на произведения. Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий может быть расширен администратором (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Насекомые» и вторая сюита Баха.
Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор. Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти; из пользовательских оценок формируется усреднённая оценка произведения — рейтинг. На одно произведение пользователь может оставить только один отзыв.
- Реализован на базе RestAPI.
- Технология - Django Rest Framework
- Документация по ресурсам на http://127.0.0.1:8000/redoc/
Python 3.9.4, Django 3.1+, Django REST Framework, SQLite3, Simple JWT, Django Filter.
Создайте виртуальное окружение:
python -m venv venvАктивируйте его:
source venv/Scripts/activateИспользуйте pip, чтобы установить зависимости:
pip install -r requirements.txtПосле создайте в корневой директории файл с названием ".env" и поместите в него:
SECRET_KEY=любой_секретный_ключ_на_ваш_выбор
DEBUG=False
ALLOWED_HOSTS=*Не забудьте применить все миграции:
python manage.py migrateИ запускайте сервер:
python manage.py runserver- Заходим в sqlite shell:
sqlite3- Импортируем нужные файлы:
sqlite> .mode csv table_name
sqlite> .import file_name.csv table_nameСоздайте супер пользователя, обязательно укажите почту и пароль:
python manage.py createsuperuserОтправьте POST-запрос на ссылку: http://127.0.0.1:8000/api/v1/auth/email/ — не забудьте указать в параметрах вашу почту!
Пример:
curl -X POST -F "email=ваша_почта@gmail.com" http://127.0.0.1:8000/api/v1/auth/email/В папке ./sent_emails/ появится новое "письмо", откройте его и скопируйте код для авторизации.
Теперь отправьте POST-запрос, только с кодом на http://127.0.0.1:8000/api/v1/auth/token/, чтобы получить токен. Пример:
curl -X POST -F "email=ваша_почта@gmail.com" -F "confirmation_code=ваш_код" http://127.0.0.1:8000/api/v1/auth/token/Чтобы открыть документацию, запустите сервер и перейдите по ссылке:
http://127.0.0.1:8000/redoc/