Skip to content

keplian/api_yamdb

Repository files navigation

Проект YaMDb

Описание

Учебный проект для ЯндексПрактикума.

Проект 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

Как импортировать данные в БД для тестирования из своего csv файла?

  1. Заходим в sqlite shell:
sqlite3
  1. Импортируем нужные файлы:
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/

About

api_yamdb

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages