Django — один из популярных фреймворков на языке Python, для создания веб-приложений. На его основе созданы сотни тысяч сайтов по миру, он используется в сайтах Instagram, YouTube, Google и других.
С его помощью я создал и несколько своих проектов, включая Intelligence, обеспечивающий обработку новостей торговых представительств.
Самая известная команда для запуска проекта на Django в режиме разработки:
python manage.py runserver
Она запускает локальный сервер и позволяет в браузере посмотреть сайт. Эту команду можно ввести один раз, и сайт будет перезапускаться при внесении изменений кода, а иногда приходится отключать и запускать заново.
Если же добавляются дополнительные инструменты окружения, например, загрузка переменных окружения из облака (скажем, я использую сервис Tuna) и проектный менеджер uv, то строка становится длиннее.
Например, вот такой:
tuna secrets run --project PROJECT --config DEV --api-key KEY12345 -- uv run manage runserver
Результат будет тем же, что и выше: запустится локальный сервер. Есть ещё вспомогательные команды, например migrate для миграций в БД или shell для запуска Django в режиме командной строки.
И каждый раз вводить длинную команду становится неудобно. Особенно, если добавляются некоторые переменные, подгружаемые из окружения.
Вот здесь и написал для себя на Rust консольное приложение dj. Пример запуска с ним локального сервера:
PS C:\brainstorm> dj
[DJ | WARN]: custom command detected — [django] section settings (port, flags, etc.) are ignored.
INFO: Will watch for changes in these directories: ['D:\\Coderep\\production\\brainstorm']
INFO: Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
INFO: Started reloader process [46732] using WatchFiles
INFO: Started server process [11896]
INFO: Waiting for application startup.
INFO: Application startup complete.
Вот так. Все необходимые настройки приложение самостоятельно заберёт из конфигурационного файла start.toml. При необходимости подгрузит из окружения или файла .env необходимые переменные. Например, секретное значение для ключа --api-key для Tuna.
Другие команды manage.py можно напрямую передавать dj при запуске:
dj migrate(или алиасdj m)dj shell(или через алиасdj s)
И прочие. Просто и удобно.
Коротко о DJ
Простое консольное приложение, написанное на Rust. Основные возможности текущей версии 0.1.2:
- запуск команд Django, с разделением на две сущности:
runserver(с возможностью кастомизации черезstart.toml) и прочих команд manage.py (передаются напрямую утилите: migrate, makemigrations, shell и др., для некоторых предусмотрены короткие алиасы) - настройка поведения через start.toml
- подхват "на лету" переменных окружения из окружения или заданного файла (не рекомендуется их использовать внутри start.toml)
- поддержка облачного сервиса секретов
tuna secretsи проектного менеджераuv - поддержка на разных ОС (проверялось на Windows, macOS, Ubuntu)
⚠️Важно: не проектировалось для production, соответственно не тестировалось в этой среде.
Публичный репозиторий на GitHub: https://github.com/Shindler7/dj