Django TemplateDoesNotExist?

我的本地机器在Ubuntu8.10上运行Python2.5和Nginx,Django是从最新的开发主干构建的

对于我请求的每个URL,它都会抛出:

TemplateDoesNotExist位于/appname/path appname/template_name.html

Django尝试按以下顺序加载这些模板:
*使用loader django.template.loaders.filesystem.function:
*使用loader django.template.loaders.app_directories.function:

模板目录
(’/usr/lib/python2.5/site packages/projectname/templates’,)

在这种情况下,它是否在寻找/usr/lib/python2.5/site packages/projectname/templates/appname/template\u name.html?奇怪的是这个文件确实存在于磁盘上。为什么Django找不到它

我在Ubuntu 9.04上使用Python2.6在远程服务器上运行了相同的应用程序,没有出现这样的问题。其他设置相同

在我的本地机器上是否存在任何错误配置,或者是什么可能导致我应该调查的此类错误

在mysettings.py中,我指定了:

SETTINGS\u PATH=os.PATH.normpath(os.PATH.dirname(\uu文件\uu))
#在与settings.py相同的文件夹中查找模板。
模板目录=(
join(设置\路径“模板”),
)

它应该查找以下文件:

  • /usr/lib/python2.5/site-packages/projectname/templates/appname1/template1.html
  • /usr/lib/python2.5/site-packages/projectname/templates/appname1/template2.html
  • /usr/lib/python2.5/site-packages/projectname/templates/appname2/template3.html

以上所有文件都存在于磁盘上

已解决

在我尝试之后,它现在可以工作了:

chown-R www-data:www-data/usr/lib/python2.5/site-packages/projectname/*

真奇怪。我不需要在远程服务器上执行此操作即可使其正常工作

第一个解决方案

这些设置

模板目录=(
join(设置\路径“模板”),
)

这意味着Django将查看项目下templates/目录中的模板

假设您的Django项目位于/usr/lib/python2.5/site packages/projectname/,那么通过您的设置,Django将在/usr/lib/python2.5/site packages/projectname/templates/下查找模板

因此,在这种情况下,我们希望将模板移动到如下结构:

/usr/lib/python2.5/site-packages/projectname/templates/template1.html
/usr/lib/python2.5/site-packages/projectname/templates/template2.html
/usr/lib/python2.5/site-packages/projectname/templates/template3.html

第二种解决方案

如果仍然不起作用,并且假设您在settings.py中配置了应用程序,如下所示:

已安装的应用程序=(
“appname1”,
“appname2”,
“appname3”,
)

默认情况下,Django将在每个已安装应用程序的templates/目录下加载模板。因此,对于您的目录结构,我们希望将模板移动为如下所示:

/usr/lib/python2.5/site-packages/projectname/appname1/templates/template1.html
/usr/lib/python2.5/site-packages/projectname/appname2/templates/template2.html
/usr/lib/python2.5/site-packages/projectname/appname3/templates/template3.html

默认情况下,可能无法定义设置路径。在这种情况下,您需要定义它(在settings.py中):

导入操作系统
设置\路径=os.PATH.dirname(os.PATH.dirname(\文件\文件))

发表评论