模板没有在 django 中查看应用级模板目录?

Posted

技术标签:

【中文标题】模板没有在 django 中查看应用级模板目录?【英文标题】:template not looked at app level template directory in django? 【发布时间】:2014-05-20 07:59:39 【问题描述】:

我收到此错误:

TemplateDoesNotExist at /link/

link_app/link_list.html
Request Method: GET
Request URL:    http://127.0.0.1:8000/link/
Django Version: 1.6
Exception Type: TemplateDoesNotExist
Exception Value:    
link_app/link_list.html

在我的link_app 中,我有一个templates 文件夹,我在其中放置了link_list.html

我还在我的setting.py中添加了以下内容

TEMPLATE_LOADERS = (
   'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

我还有一个 templates 文件夹,该文件夹对于我拥有的项目(而不是应用程序)是通用的

TEMPLATE_DIRS=(os.path.join(BASE_DIR, 'templates'),) 中的settings.py

编辑: 从错误中,它似乎在寻找list_html link_app/link_list.html

但它一定在看link_app/templates/link_list.html

项目结构:

LinkDjangoProject
     link_project
     link_app
          templates
             link_list.html
     templates
     manage.py

【问题讨论】:

你的 INSTALLED_APPS 中有 link_app 吗? @Greg 是的,当然,它在我的 Installed_apps 中 你的项目目录限制是什么? @frnhr:我上面已经更新了 【参考方案1】:

标准项目结构(部分)是这样的:

projectname
  |
  |-projectname  <-- settings.py, etc.
  |
  |-someapp
    |
    |-templates
      |
      |-someapp  <-- templates that are referenced with "someapp/a_template.html" go inside this directory
      |
      ...

我怀疑您缺少 projectname/someapp/templates 目录中的 someapp 目录。


此结构允许一个应用程序中的模板在另一个应用程序中被覆盖,前提是覆盖的应用程序位于 settings.pyINSTALED_APPS 列表中的原始应用程序之前

类似的目录结构也用于静态和/或媒体文件。

【讨论】:

以上是关于模板没有在 django 中查看应用级模板目录?的主要内容,如果未能解决你的问题,请参考以下文章

Django:覆盖和扩展应用程序模板

覆盖 django-allauth 的默认模板

06-Django-基础篇-模板

Django 应用 + 第 3 方的模板目录

Django 找不到应用模板

Django 模板