在 Django 中启用模板继承

Posted

技术标签:

【中文标题】在 Django 中启用模板继承【英文标题】:Enabling Template Inheritance in Django 【发布时间】:2011-12-24 23:22:19 【问题描述】:

Python 2.7.1 / Django 1.3

我是 Django 模板的新手,正在尝试做非常简单的模板继承。

testbase.html

hello

% block tester %
fail
% endblock %

testblock.html

% extends "testbase.html" %

% block tester %
pass
% endblock %

结果

hello fail

这两个模板位于已添加到项目 settings.py 文件中的同一目录中,由于它找到了基本模板,我无法找到为什么它无法找到子模板。

感谢您对下一步尝试的任何想法。

【问题讨论】:

您是否正在从您的视图中渲染“testblock.html”? 是的,它是从视图中渲染的,我怀疑视图正确地渲染了基本模板,因为它渲染了“hello fail”。似乎是基础视图和包含块的视图之间的脱节。 能否请您展示您的观点(至少是其中的一部分)? 【参考方案1】:

在您看来,您需要确保您指向的模板是testblock.html 而不是testbase.html

假设您使用的是render_to_response,它看起来像:

return render_to_response('testblock.html')

如果您的视图函数引用testbase.html,那么您将获得未扩展的模板。这是设计使然。

这里有一个指向template documentation 的链接,以供参考。 :)

【讨论】:

谢谢!我正在从视图中调用基本模板。太沉迷于认为这是模板中的问题。

以上是关于在 Django 中启用模板继承的主要内容,如果未能解决你的问题,请参考以下文章

Django 第六课 模板继承

Django模板的继承

django基础知识之模板继承:

Django模板继承和引用

django:相同的模板标签,但在多个继承的 html 模板中

javascript模板继承