Как предварительно загрузить импорт в команду оболочки Manage.py Django?

StackOverflow https://stackoverflow.com/questions/1836361

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top