Как предварительно загрузить импорт в команду оболочки Manage.py Django?
-
11-09-2019 - |
Вопрос
Когда я запускаю оболочку Manage.py в своем проекте Django, чтобы взглянуть на что-то, есть общие импорты, которые я всегда хочу запускать в начале оболочки (например,Я всегда хочу импортировать файлы моделей.) Как мне сделать так, чтобы они запускались автоматически каждый раз, когда я запускаю команду оболочки?
Второй связанный вопрос: когда я нажимаю стрелку вверх, я получаю символ «^A» вместо ранее запущенной команды в оболочке Manage.py (и в моей обычной оболочке Python), как я могу это исправить, чтобы она загружала предыдущую команду например, в командной строке Linux/Unix?
Решение
Для первого вопроса посмотрите manage.py shell_plus
команда, обеспечиваемая расширения django проект.Он загрузит все файлы вашей модели при запуске оболочки.В проекте есть и множество других полезных трюков, так что его определенно стоит попробовать.
По второму вопросу могу только догадываться, что нужно установить readline
.
Другие советы
ты можешь повторить то, что
python manage.py shell
делает, просто делая:
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
и у вас будет вся среда, настроенная для остальной части этого сценария.Здесь есть и другие способы сделать это: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/
Одна единственная вещь, которая может решить обе ваши проблемы, - это ипитон.ipython хранит предыдущие выполнения и также может дать вам завершение.
Автоматический импорт часто используемых пакетов в python manage.py shell_plus
Пример:
# local_settings
SHELL_PLUS_PRE_IMPORTS = (
('<app_name>.models', '*'),
('<app_name>.forms', '*'),
('<app_name>.views', '*'),
('django.core.urlresolvers', '*'),
('django.db', 'connection'),
('django.db', 'reset_queries'),
)
SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>']
Ссылка:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst
Добавление дополнительных элементов в оболочку django можно выполнить, используя в качестве отправной точки команду Shell_plus, представленную в Расширения Джанго app и модифицируем его, добавляя все, что вы хотите сделать доступным в словарь imported_objects.
Например, если вы дублируете файл shell_plus.py и добавляете в конец эти две строки:
# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects) # <-- this is the original final line
Когда вы запустите оболочку с использованием нового файла, ссылка «alist» будет доступна.Я привел здесь более длинный пример: http://www.micelepasin.org/techblog/?p=1012