添加方法导入到shell_plus

时间:2013-10-07 23:53:05

标签: django django-extensions

shell_plus中,有没有办法自动导入选定的辅助方法,比如模型?

我经常打开shell来输入:

proj = Project.objects.get(project_id="asdf")

我想将其替换为:

proj = getproj("asdf")

2 个答案:

答案 0 :(得分:15)

Found it in the docs。引自那里:

  

其他进口

     

除了导入模型,您还可以指定其他项目   默认导入。这些在SHELL_PLUS_PRE_IMPORTSSHELL_PLUS_POST_IMPORTS中指定   SHELL_PLUS_PRE_IMPORTS = ( ('module.submodule1', ('class1', 'function2')), ('module.submodule2', 'function3'), ('module.submodule3', '*'), 'module.submodule4' ) 。前者是在任何其他之前进口的   导入(例如默认模型导入),后者导入   在任何其他进口之后。两者都有类似的语法。所以在你的   settings.py文件:

from module.submodule1 import class1, function2
from module.submodule2 import function3
from module.submodule3 import *
import module.submodule4
     

以上示例将直接转换为以下python   在自动导入之前执行的代码:

{{1}}
     

一旦shell启动,这些符号就会可用。

答案 1 :(得分:0)

好的,有两种方式:

1)使用PYTHONSTARTUP变量(见Docs

#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启动(我最喜欢的)(见Docs,此issue和此Docs):

$ 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