Как предварительно загрузить импорт в команду оболочки Django manage.py? - PullRequest
11 голосов
/ 03 декабря 2009

Когда я запускаю оболочку manage.py в своем проекте Django, чтобы взглянуть на что-то, есть общие операции импорта, которые я всегда хочу запускать в начале оболочки (например, я всегда хочу импортировать файлы моей модели.) Как можно У меня они запускаются автоматически при каждом запуске команды оболочки?

2-й связанный вопрос: когда я нажимаю стрелку вверх, я получаю символ «^ A» вместо ранее выполненной команды в оболочке manage.py (и в моей обычной оболочке python), как я могу это исправить, чтобы она загружалась предыдущая команда, как в командной строке Linux / Unix?

Ответы [ 5 ]

10 голосов
/ 03 декабря 2009

Для первого вопроса посмотрите на команду manage.py shell_plus, предоставленную проектом django-extensions . Он загрузит все файлы вашей модели при запуске оболочки. В проекте также есть множество других полезных трюков, так что это определенно стоит проверить.

По второму вопросу, я могу только догадываться, что вам нужно установить readline.

3 голосов
/ 16 июня 2011

Вы можете повторить то, что

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 /

2 голосов
/ 03 декабря 2009

Одна вещь, которая может решить обе ваши проблемы, это ipython . ipython хранит предыдущие исполнения и может также дать вам завершение.

1 голос
/ 24 августа 2015

Автоматический импорт часто используемых пакетов в 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

0 голосов
/ 17 ноября 2010

Добавление дополнительных вещей в оболочку django можно сделать, используя в качестве отправной точки команду shell_plus, предоставленную в приложении django-extensions , и изменив ее, добавив все, что вы хотите сделать доступным для импортированных объектов 'словарь.

Например, если вы продублируете файл shell_plus.py и добавите две строки в конце:

# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects)  # <-- this is the original final line

Когда вы запустите оболочку с использованием нового файла, будет доступна ссылка 'alist'. Я поместил более длинный пример здесь: http://www.michelepasin.org/techblog/?p=1012

...