Учебный проект для ЯндексПрактикума.
Проект 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/