gpt4 book ai didi

python - Django 模板不存在?

转载 作者:行者123 更新时间:2023-11-28 19:32:22 25 4
gpt4 key购买 nike

我的本​​地计算机在 Ubuntu 8.10 上运行 Python 2.5 和 Nginx,Django 从最新的开发主干构建。

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

TemplateDoesNotExist at /appname/path appname/template_name.html

Django tried loading these templates, in this order: * Using loader django.template.loaders.filesystem.function: * Using loader django.template.loaders.app_directories.function:

TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)

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

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

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

在我的 settings.py 中,我指定了:

SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)

它应该寻找以下文件:

  • /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/*

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

最佳答案

第一个解决方案:

这些设置

TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)

意味着 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 中配置了应用程序,如下所示:

INSTALLED_APPS = (
'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_PATH 默认情况下可能未定义。在这种情况下,您需要定义它(在 settings.py 中):

import os
SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__))

关于python - Django 模板不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com