首页  >  文章  >  后端开发  >  以下是一些适合您的内容的基于问题的标题: 直接和具体: * 为什么 Django 会抛出 TemplateDoesNotExist 错误,即使我的模板存在? * Django 模板加载:

以下是一些适合您的内容的基于问题的标题: 直接和具体: * 为什么 Django 会抛出 TemplateDoesNotExist 错误,即使我的模板存在? * Django 模板加载:

Barbara Streisand
Barbara Streisand原创
2024-10-29 03:16:02864浏览

Here are some question-based titles that fit your content:

Direct and Specific:

* Why Does Django Throw a TemplateDoesNotExist Error, Even Though My Templates Are Present?
* Django Template Loading: How to Fix 'TemplateDoesNotExist' Errors When Templa

Django TemplateDoesNotExist

问题

Django 无法定位指定模板并抛出 TemplateDoesNotExist 类型的异常。即使模板存在于磁盘上,Django 期望找到模板的位置也不存在。

Django 的模板加载顺序

Django 在加载模板时遵循特定的顺序:

  • django.template.loaders.filesystem - 从文件系统加载模板。
  • django.template.loaders.app_directories - 从应用程序的模板目录加载模板。

检查 TEMPLATE_DIRS

在这种情况下,TEMPLATE_DIRS 的配置指示 Django 在 /usr/lib/python2.5/site-packages/projectname/templates 中查找模板。但是,模板组织在 /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html 中。 Django 无法找到模板,因为它希望它们位于 templates 目录的根目录中。

解决方案 1

要解决此问题,请将模板移至 /usr/lib/python2.5 /site-packages/projectname/templates/template_name.html.

解决方案 2

或者,考虑修改 TEMPLATE_DIRS 以在应用程序的模板目录中搜索模板:

<code class="python">TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'appname1/templates'),
    os.path.join(SETTINGS_PATH, 'appname2/templates'),
    os.path.join(SETTINGS_PATH, 'appname3/templates'),
)</code>

所有权权限

如果上述解决方案不起作用,请检查模板目录的所有权权限。在给定的情况下,执行 chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/* 解决了该问题,因为 Web 服务器用户需要适当的权限才能访问模板。

以上是以下是一些适合您的内容的基于问题的标题: 直接和具体: * 为什么 Django 会抛出 TemplateDoesNotExist 错误,即使我的模板存在? * Django 模板加载:的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn