Django-Extensions: как добавить локальные переменные в shell_plus
У меня есть несколько словарей, и я хочу, чтобы каждая пара ключ/значение была определена в локальной области видимости django-extensions
shell_plus
сессии.
Моя текущая команда управления выглядит примерно так:
import django
import code
devs = {
'hot_water': object()
'air': object()
}
procs = {
'clean_keg': lambda x: 'do_something'
}
# unnecessary code when using `shell_plus`
model_map = { model.__name__: model for model in django.apps.apps.get_models() }
local = {
'procs': procs,
'devs': devs,
**devs,
**procs,
**model_map
}
code.interact(local=local)
Теперь я обнаружил, что хочу добавить settings
, models
и несколько других объектов Django, которые уже включены в shell_plus
, но я не могу найти способ добавить локальные переменные в сессию shell_plus
.
В ответе Бретта Томаса показано как импортировать модули в shell_plus
сессию, но не показано, как добавить переменные из диктоподобного объекта.
Как добавить переменные в shell_plus
сессию?
Вы можете добавить переменные из вашей команды управления, например:
SHELL_PLUS_IMPORTS = [
'my_app.management.commands.my_command import procs, devs',
'from module.submodule2 import function3 as another1',
'from module.submodule3 import *',
'import module.submodule4',
]
В результате этого procs
и devs
из my_command
будут загружены как переменные в оболочку.