相关疑难解决方法(0)

如何通过"manage.py shell"使用交互式解释器重新加载Django模型模块?

我知道如何在常规Python解释器会话中重新加载常规Python模块.这个问题记录了如何做得很好:

如何卸载(重新加载)Python模块?

出于某种原因,我在Django的"manage.py shell"解释器会话中遇到了麻烦.要重新创建我的问题,请启动此处的基本Django教程:

编写你的第一个Django应用程序,第1部分

创建"民意调查"应用程序和"民意调查"类后,通过"manage.py shell"启动解释器并将"民意调查"应用程序导入其中.

import polls.models as pm
Run Code Online (Sandbox Code Playgroud)

创建一个新的"民意调查"对象:

p = pm.Poll()
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利.现在回到您的源代码并添加任意方法或属性.例如,我添加了:

def x(self):
    return 2+2
Run Code Online (Sandbox Code Playgroud)

现在回到解释器并"重新加载"模块:

reload(pm)
Run Code Online (Sandbox Code Playgroud)

现在尝试使用您的新方法或属性:

p1 = pm.Poll()
p1.x()
Run Code Online (Sandbox Code Playgroud)

你会收到这条消息:

'Poll' object has no attribute 'x'
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?我还尝试重新运行import命令,使用不同的语法导入模块,删除对任何"Poll"对象或"Poll"类的所有引用.我也尝试过使用IPython解释器和普通的Python(v2.6)解释器.似乎没什么用.

在常规解释器会话中使用与任意Python模块相同的技术可以很好地工作.我似乎无法让它在Django的"shell"会话中工作.

顺便说一句,如果它有任何区别,我在Ubuntu 9.04机器上这样做.

python django

53
推荐指数
5
解决办法
2万
查看次数

标签 统计

django ×1

python ×1