django扩展问题-未显示子模板

django扩展问题-未显示子模板,django,django-templates,Django,Django Templates,我已经配置了在django中使用extends模板函数所必需的东西。这是我的密码: 在settings.py中 在base.html中-位于app/templates/site中 我还尝试了base.html中的{%include“site/sidebar.html”%}标记来检查模板目录,yes include标记正在工作 {%extends%}中有什么问题?为什么它没有检测到其父模板 请帮帮我,伙计们。。非常感谢你的帮助。。。我还在等答案。。tnx有很多问题。简短的回答是“不,你不能动态地更

我已经配置了在django中使用extends模板函数所必需的东西。这是我的密码:

在settings.py中 在base.html中-位于app/templates/site中 我还尝试了base.html中的{%include“site/sidebar.html”%}标记来检查模板目录,yes include标记正在工作

{%extends%}中有什么问题?为什么它没有检测到其父模板


请帮帮我,伙计们。。非常感谢你的帮助。。。我还在等答案。。tnx有很多问题。简短的回答是“不,你不能动态地更改模板目录,即使你可以,你也肯定不会像现在这样做”

你的主要问题是你忘记了模板目录设置中的逗号。试试这个:

TEMPLATE_DIRS = ( my_dir() + '/app/templates', )

请忽略cheshire的回答。

使用
os.path.join
合并两个目录

import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'),
)
这里我假设
模板
是一个保存模板的目录。现在,要访问这些模板,这是它们的基本目录。因此,要在其他文件中扩展
base.html
,请执行以下操作-

{% extends "base.html" %}
...
{% endblock %}

你确定你有正确的模板加载程序设置吗? 您的settings.py中应该包含以下内容:

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

在视图中渲染哪个模板?应该是孩子,而不是家长。

我不确定你的问题是什么,但你应该检查以下几点:

  • {%extends%}阶段应该是模板文件中的第一个阶段(然后放一个空行以确保)
  • 我认为对基本模板的引用是相对于模板的。尝试不同的方法,如将两个模板放在同一级别等
  • 检查两个模板中的所有标记,确保其格式正确
  • 检查文件的编码。如果是UTF-8,请尝试在两个文件中禁用BOM表
  • 可能是您的目录设置有问题。尝试硬编码绝对路径以检查这一点

这些都是我可以想象的问题,但我不能保证它会起作用。

Daniel Roseman给出的答案是正确的,但是如果指向您的子模板不实用(因为它可能不适用于更复杂的项目),有一种快速简便的方法可以解决这个问题

在子模板中,删除指向父模板的{%extends”“%}标记

在父模板中,将{%block content%}替换为{%include“path/to/child/template”%}


就这样!您的子模板现在将加载到块内容中,就像您直接渲染它一样。

i将其更改为template_DIRS=(my_dir()+'/app/templates',),但仍然不走运:(仍然需要回答…有人能帮我解决这件事吗?我陷入了这个问题:(我尝试过你的解决方案,但是子模板仍然没有显示..template folder是我所有html文件所在的位置它被划分为多个文件夹,在这个问题中,base.html位于site folder中。除了需要设置模板目录外,还有什么其他设置吗?我认为我的模板目录正在工作,因为{%include%}标记工作正常。
TEMPLATE\u DIRS
是唯一可以设置模板路径的地方。请将所有模板放在一个地方,除非您有充分的理由不这样做。我将子文件夹放在模板文件夹中,以便我可以组织模板文件。模板文件夹下是包含文件夹和保存文件的站点文件夹不同的文件。包含文件夹处理所有包含html文件,站点文件夹保存结构模板,如base.html和sidebar.html。您的视图是什么样子的?谢谢您解决了我的问题。我过度查看了该选项。非常感谢您。您的权利使我的视图指向父模板。现在我将其更改为sidebar.html现在它工作得很好……:)非常感谢你在我无意中看到这篇文章之前,我一直在绞尽脑汁试图找出问题所在。在我将其拆分后,我仍在加载父模板。相同!Thks a lot@danielt这不是在动态变化,它使用的是settings.py所在的目录,只有在导入settings.py时才会发生。这太糟糕了。settings.py不是导入?这是全局性的,我想。我在创建时必须将DIRS变量设置到templates文件夹,以便显示HTML文件。这是有效的。但现在模板扩展无法实现?这太糟糕了。感谢您的回复…Daniel找到了正确的解决方案。希望本主题能提醒其他人:)两个文件都在同一个templates文件夹中。就好像Django在包含extends语句后找不到子文件数据,但在删除extends语句后可以找到它一样。View函数明确指向子块数据文件。
import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'),
)
{% extends "base.html" %}
...
{% endblock %}
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)