Тестовое задание по работе с Django. Написание API endpointов по введению в базу новых роботов, получению отчета в excel, отправке сообщений по оставленным заявкам.
- Модели не изменялись
- Чувствительные данные в
settings.pyне переносились в.env - Не использовался DRF
- Валидация данных при помощи библиотеки
pydentic - Формирование
excelфайла при помощиopenpyxl - Отслеживание новых роботов и отправка сообщений при помощи
django signalsиdjango mail
- Развернуть виртуальную среду
- Установить библиотеки:
pip install -r requiremenets.txt- Выполнить миграции
python3 manage.py makemigrations- Создать
.envфайл с следующими переменными:- EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
- EMAIL_HOST='Ваш SMTP server'
Например smtp.yandex.ru - EMAIL_PORT=465
Порт сервера - EMAIL_USE_SSL=True
Использование порта SSL или TLS - EMAIL_USE_TLS=False
- EMAIL_HOST_USER='[email protected]'
Ваша почта - EMAIL_HOST_PASSWORD='password'
Созданный сервисом пароль
-убедитесь в наличии .env и requirements.txt в корне проекта, после выполните команду
docker-compose up --build-Для создания суперпользователя выполните команду, где container_name это название вашего контейнера:
docker exec -it container_name python manage.py createsuperuser- Запустите приложение
python3 manage.py runserver- Для проверки данных в
/adminпанеле создайте суперпользователя
python3 manage.py createsuperuser- При переходе в браузере по адресу можно проверить данные
- POST запрос в
endpoint/robots/(например http://127.0.0.1:8000/robots/). Необходимый формат данных:{"model":"r8","version":"d8","created":"2023-09-25 23:59:59"}
- GET запрос
endpoint/robots/report/(например http://127.0.0.1:8000/robots/report/). При запросе начнется скачивание файла
- POST запрос в
endpoint/orders/(например http://127.0.0.1:8000/orders/). Необходимый формат данных:{"robot_serial": "r8-d8", "customer": "[email protected]"}После создания робота с моделью и версией"model":"r8","version":"d8", аналогичными заявке, на указанную почту отправится письмо с оповещением о появлении робота.