2012-09-04 234 views
0

我正在開發一個Django項目並將其部署到OpenShift PaaS。起初一切正常,但經過一些與模板系統無關的更改(我添加了django-hosts)後,發生了一些錯誤,並且出現了"module object 'template' has no attribute 'loader'"錯誤。更奇怪的是,每次wsgi應用程序重新啓動後,它只出現兩次,第三次請求中的一切都開始工作。破損前我回到最後一次提交,但問題依然存在。我從零開始重新創建了項目並重新安裝了我的Django應用程序,但它也沒有去;錯誤開始出現,而不僅僅是前兩個請求。 from django import template確實會導入模板模塊對象,但與預期相比,此對象缺少約5個屬性,包括loaderPython導入:從django導入模板:模塊對象'模板'沒有屬性'loader'

然後我注意到,如果我嘗試在本地從Django shell運行相同的代碼,會發生同樣的事情。但它仍然可以在我的應用程序的views.py中使用本地Django開發服務器。最初用於OpenShift。我試着用from django.template import loader替換from django import template,並直接調用loader - 和一切正常

我想我不明白關於Python導入的一些東西。什麼是

import a 
a.b 

from a import b 
b 

之間的區別?

爲什麼a.b在第一個例子中遺漏了屬性b在第二個呢?

回答

1

發生這種情況是因爲template是django中的一個包,而loader是一個模塊,而您期望模板是模塊並且是裝載器的一個屬性。它按預期工作。