Django terminal
lp9 |
Разработку web-приложения на Django я веду в IDE, но запускать Django-сервер и работать в Django-shell и с базой данных предпочитаю через терминал. Для ускорения начала работы в нем, я написал скрипт, который запускает gnome-terminal с четырьмя вкладками, в которых запущены ./manage.py runserver, ./manage.py shell, ./manage.py dbshell и bash.
Настройка скрипта производится переменными:
WORK_DIR: путь к вашему проекту на Django;
MANAGE_SUBCOMMANDS: команды manage.py для запуска во вкладках;
SWITCH_TO_TAB: переключиться к вкладке после запуска терминала (необходимо установить xdotool).
Для запуска скрипта сохраняем его в файл django_terminal и даем права на исполнение:
далее, копируем в /usr/local/bin:
Для удобства запуска добавляем исполняемый файл в горячие клавиши, например, на Ctrl+Alt+D.
Особенности работы с вкладкой запущенного сервера:
Django-сервер запускается в бесконечном цикле для того, чтобы его можно было перезагружать. После остановки сервера по Ctrl+C управление передается bash. Если не нужно закрывать вкладку и по новой запустить сервер выходим из bash по Ctrl+D. Для закрытия вкладки нужно остановить сервер, посмотреть pid запущенной вкладки gnome-terminal’а и завершить процесс.
Внимание, если закрыть окно терминала, то запущенные процессы не остановятся, а продолжат висеть в памяти.
#!/bin/bash
###
#
# Run a django manage.py subcommands in a gnome-terminal tabs.
# To switch to a tab after terminal launch install xdotool.
#
###
BASH=/bin/bash
PYTHON=/usr/bin/python
GNOME_TERMINAL=/usr/bin/gnome-terminal
XDOTOOL=/usr/bin/xdotool
# config
WORK_DIR=/media/share/Sources/django/yourpics
MANAGE_SUBCOMMANDS="shell dbshell"
SWITCH_TO_TAB=2
${PYTHON} -c """
import subprocess
terminal = ['${GNOME_TERMINAL}']
terminal.extend(['--tab', '-e', '''
${BASH} -c '
cd ${WORK_DIR}
for (( ; ; )) ; do
${BASH} -c \"./manage.py runserver\"
${BASH}
done
'
'''])
for cmd in '${MANAGE_SUBCOMMANDS}'.split():
terminal.extend(['--tab', '-e', '''
${BASH} -c '
cd ${WORK_DIR}
./manage.py {cmd}
read
'
'''.format(cmd=cmd)])
terminal.extend(['--tab', '-e', '''
${BASH} -c '
cd ${WORK_DIR}
[ -x ${XDOTOOL} ] && ${XDOTOOL} key alt+${SWITCH_TO_TAB}
${BASH}
read
'
'''])
subprocess.call(terminal)
"""
Настройка скрипта производится переменными:
WORK_DIR: путь к вашему проекту на Django;
MANAGE_SUBCOMMANDS: команды manage.py для запуска во вкладках;
SWITCH_TO_TAB: переключиться к вкладке после запуска терминала (необходимо установить xdotool).
Для запуска скрипта сохраняем его в файл django_terminal и даем права на исполнение:
chmod +x django_terminal
далее, копируем в /usr/local/bin:
cp django_terminal /usr/local/bin.
Для удобства запуска добавляем исполняемый файл в горячие клавиши, например, на Ctrl+Alt+D.
Особенности работы с вкладкой запущенного сервера:
Django-сервер запускается в бесконечном цикле для того, чтобы его можно было перезагружать. После остановки сервера по Ctrl+C управление передается bash. Если не нужно закрывать вкладку и по новой запустить сервер выходим из bash по Ctrl+D. Для закрытия вкладки нужно остановить сервер, посмотреть pid запущенной вкладки gnome-terminal’а и завершить процесс.
$ ps aux |grep [r]unserver
lynx 8665 0.0 0.0 12304 1604 pts/8 Ss 13:42 0:00 /bin/bash -c ? cd /media/share/Sources/django/yourpics? for (( ; ; )) ; do ? /bin/bash -c "./manage.py runserver"? /bin/bash? done?
$ kill -9 8665
Внимание, если закрыть окно терминала, то запущенные процессы не остановятся, а продолжат висеть в памяти.