在shell_plus
中,有没有办法像模型一样自动导入选定的辅助方法?
我经常打开 shell 输入:
proj = Project.objects.get(project_id="asdf")
我想将其替换为:
proj = getproj("asdf")
在shell_plus
中,有没有办法像模型一样自动导入选定的辅助方法?
我经常打开 shell 输入:
proj = Project.objects.get(project_id="asdf")
我想将其替换为:
proj = getproj("asdf")
在文档中找到它。从那里引用:
额外进口
除了导入模型之外,您还可以默认指定要导入的其他项目。这些在
SHELL_PLUS_PRE_IMPORTS
和 中指定SHELL_PLUS_POST_IMPORTS
。前者在任何其他导入之前导入(例如默认模型导入),后者在任何其他导入之后导入。两者都有相似的语法。所以在你的 settings.py 文件中:SHELL_PLUS_PRE_IMPORTS = ( ('module.submodule1', ('class1', 'function2')), ('module.submodule2', 'function3'), ('module.submodule3', '*'), 'module.submodule4' )
上面的示例将直接转换为以下 python 代码,该代码将在自动导入之前执行:
from module.submodule1 import class1, function2 from module.submodule2 import function3 from module.submodule3 import * import module.submodule4
这些符号将在 shell 启动后立即可用。
好的,两种方法:
1)使用 PYTHONSTARTUP 变量(请参阅此文档)
#in some file. (here, I'll call it "~/path/to/foo.py"
def getproj(p_od):
#I'm importing here because this script run in any python shell session
from some_app.models import Project
return Project.objects.get(project_id="asdf")
#in your .bashrc
export PYTHONSTARTUP="~/path/to/foo.py"
2)使用 ipython 启动(我最喜欢的)(请参阅此文档、此问题和此文档):
$ pip install ipython
$ ipython profile create
# put the foo.py script in your profile_default/startup directory.
# django run ipython if it's installed.
$ django-admin.py shell_plus