Django-command - инструмент командной строки, который позволяет выполнять часто используемые команды при разработке проектов на фреймворке Django. Данный инструмент помогает повысить эффективность разработки и упростить рабочие процессы, связанные с веб-приложениями на Django.
Для кого это статья?
Статья предназначена для разработчиков проектов на фреймворке Django, которые хотят повысить эффективность своей работы.
Введение
При разработке проектов на фреймворке Django мне часто приходилось выполнять однотипные рутинные задачи: создание миграций, применения миграций, обновление локалей и так каждый раз при изменении моделей базы данных. Приходилось запоминать большой набор команд и их аргументов. Конечно все команды я хранил в одном файле и тащил этот файл из проекта в проект. С ростом количество проектов для меня это стало не удобным каждый раз заглядывать в файл в поиске нужной команды. Мне хотелось более удобный инструмент, который позволил бы оптимизировать мою работу. В просторах интернета я не нашел подходящее решение этой проблемы. В результате я решил создать свой собственный инструмент django-command, который бы предоставлял удобный интерактивный интерфейс, а также с возможностью запуска из консоли без интерактива.
Установка и использование
Для установки django-command можно использовать pip:
pip install django-command
Существует несколько способов запуска команд:
В терминале наберите django-command, после этого появится в интерактивном режиме список доступных команд для выполнения, отметьте через пробел какие команды выполнить. Отмеченные команды будут выполняться по порядку выбора.
(venv) PS .\> django-command [?] Select 1 or more commands: > [ ] create_local [1] Creating locales (ru, en) [ ] update_local [2] Updating and compiling locales [ ] collect_static [3] Assembling static files in the STATIC_ROOT folder [ ] make_migrations [4] Creating migrations [ ] make_migrations_app [5] Creating the first migration for the application [ ] make_empty_migrations_app [6] Create a blank migration for the application. Used to add default data to the database table [ ] migrate [7] Applying migrations [--db_label default] [ ] create_superuser [8] Creating a user with superuser rights [ ] create_app [9] Creating an application [ ] run_server [10] Running a project on a port number, or ipaddr:port (default "127.0.0.1:8000") [--port 127.0.0.1:8000] [ ] install_requirements [11] Install all dependencies for a project from a file (default "requirements.txt") [ ] print_requirements [12] Automatically generates all the necessary dependencies for the project, and also allows you to save this list to a file (default "requirements.txt") [--save_in_file requirements.txt]
Команды можно выполнять по их названию или по номеру.
django-command make_migrations migrate # or with argument django-command make_migrations migrate -db default # or django-command 4 7
Описания команд и аргументов
Для просмотра списка доступных команд нужно ввести в терминале.
(venv) PS .\> django-command -h
usage: django-command [-h] [-db DB_LABEL] [-s SAVE_IN_FILE] [-p PORT] [-v] commands [commands ...]
CLI tool that allows you to run commonly used commands when developing Django projects.
positional arguments:
commands commands to run: create_local, update_local, collect_static, make_migrations,
make_migrations_app, make_empty_migrations_app, migrate, create_superuser,
create_app, run_server, install_requirements, print_requirements
optional arguments:
-h, --help show this help message and exit
-db DB_LABEL, --db_label DB_LABEL
database label for "migrate" command
-s SAVE_IN_FILE, --save_in_file SAVE_IN_FILE
save to file for "print_requirements" command
-p PORT, --port PORT port number, or ipaddr:port for "run_server" command
-v, --version show program's version number and exit
Команды в django-command | Аналог команды в django |
create_local | django-admin makemessages -l |
Создает файлы локалей (ru, en) для интернационализации. | |
update_local | django-admin makemessages -a django-admin compilemessages |
Обновление и компиляция локалей. | |
collect_static | python manage.py collectstatic |
Собирает статические файлы в папке STATIC_ROOT. | |
make_migrations | python manage.py makemigrations |
Создает миграции для всех приложений. | |
make_migrations_app | python manage.py makemigrations {app_name} |
Создает миграции для конкретного приложения. | |
make_empty_migrations_app | python manage.py makemigrations --empty {app_name} |
Создает пустую миграцию для конкретного приложения. | |
migrate | python manage.py migrate |
Применение миграций. Обновляет схему базы данных. | |
create_superuser | python manage.py createsuperuser |
Создает пользователя с правами администратора. | |
create_app | python manage.py startapp {app_name} |
Создает новое приложение внутри проекта Django. | |
run_server | python manage.py runserver |
Запускает веб-сервер для разработки, а также обслуживает статические файлы. | |
install_requirements | pip install -r {file_name} |
Установит все зависимости для проекта из файла (по умолчанию «requirements.txt») | |
print_requirements | pip freeze > {file_name} |
Автоматически генерирует все необходимые зависимости для проекта, а также позволяет сохранить этот список в файл. |
Как видно из таблицы приходилось запоминать много разных команд и их аргументов для полноценного создания проектов на Django. А теперь достаточно только запомнить и набрать 1 команду.
django-command
Теперь рутинная задача: создание миграций, применения миграций, обновление локалей выглядит так.
django-command make_migrations migrate update_local
# или
django-command 4 7 2
Заключение
Инструмент django-command, является эффективным способом повышения продуктивности разработки проектов на фреймворке Django. Он поможет автоматизировать рутинные задачи, повысит общую эффективность разработки и снижает вероятность ошибок.
Надеюсь, что статья поможет сэкономить Вам хоть немного времени при написании проектов на фреймворке Django, а также дать быстрый старт новичкам без необходимости проводить часы в поисках часто используемых команд.
Буду рад обратной связи. В комментариях напишите, а как Вы решаете данную задачу. И какие команды Вы используете у себя в Django проектах.