5 сентября 2026 г.

Консольная утилита Django

Автоматизация запуска веб-приложений на базе фреймворка Django

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

← Назад ко всем записям