Выполненое тестовое задание на вакансию Junior Python разработчик
Что интересного в проекте:
- Docker
- Django 3.2.16
- Python 3.10.9
- Контейнер с MongoDB (данныя БД подключена к джанго с помощью djongo)
- Сокрытие переменных окружения в .env файле (в данном случае .env расположен в репозитории, но это только в качестве удобства)
- Используется poetry вместо pip
- Работа с формами осуществляется наспямую с помощью pymongo
- Код валидации пришедших форм вынесен в сервисный слой, реализован паттерн "цепочка ответственности"
- Django команда для создания фейковых форм в БД
- Тестовый скрипт на основе unittest в django
- Используется линтер для поддержания кода в соответствии с PEP-8
Для запуска прилодения локально необходимы docker и cli утилита make (либо можно без make, посмотрев порядок команд в Makefile) Также нужно освободить порты 8000 и 8081
Все что нужно сделать - это выполнить команду в папке с Makefile:
make first-start
данная команда:
- соберет docker образы,
- поднимит docker контейнеры (web-app - контейнер с python django, mongo - БД MongoDB, mongo-express - web интерфейс для удобной работы с контейнером MongoDB)
- применит миграции
- создаст суперпользователя на основе переменных из .env
- добавит 10 фейковых форм в БД
Теперь проект доступен локально по адресу http://localhost:8000/
URL для работы с формами http://localhost:8000/get_form/ (только POST запросы)
Также web интерфейс mongo express доступен по адресу http://localhost:8081
Для тестирования нужно выполнить:
make test
Также вы можете посмотреть мое резюме