Python导入:来自django导入模板:模块对象'模板'没有属性'loader'

时间:2012-09-04 06:03:50

标签: python import openshift

我正在开发一个Django项目并将其部署到OpenShift PaaS。起初一切正常,但经过一些与模板系统无关的更改(我添加了django-hosts)后出现了一些问题,并且出现"module object 'template' has no attribute 'loader'"错误。甚至更奇怪的是,每次wsgi app重启后它只出现了两次,并且在第3次请求时一切都开始工作了。我在破损之前回到最后一次提交,但问题仍然存在。我从头开始重新创建项目并重新安装我的Django应用程序,但它也没有去;每次都会出现错误,而不仅仅是前2个请求。 from django import template确实导入了模板模块对象,但与预期相比,此对象缺少约5个属性,包括loader

然后我注意到,如果我尝试从本地运行Django shell中的相同代码,也会发生同样的事情。但它仍然适用于我的应用程序的views.py与本地Django开发服务器。并且最初用于在OpenShift中工作。我尝试将from django import template替换为from django.template import loader并直接调用loader - 并且一切正常工作

我想我对Python导入并不了解。

之间的区别是什么
import a
a.b

from a import b
b

为什么第一个例子中的a.b可以在第二个中丢失属性b?

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况是因为模板是django中的一个包,而loader是一个模块,而你期望模板是模块和加载器的一个属性。它按预期工作。