【发布时间】:2013-03-20 08:10:48
【问题描述】:
所以我有一个基本模板,其中包括一个标题:
base.html:
{% include "header.html" %}
header.html:
<ul>
<li><a>Link</a></li>
<li><a>Link</a></li>
<li><a>Link</a></li>
</ul>
{% block diskspace %}Test{% endblock %}
然后我想从扩展基础的模板中覆盖diskspace 块,例如:
album.html:
{% extends "base.html" %}
{% block diskspace %}
<p>You need more space!</p>
{% endblock %}
不幸的是,diskspace 仅包含“测试”并且未被覆盖。
我正在尝试的可能吗,还是我需要走另一条路?
解决方案
根据下面 sergzach 的回答,这是我最终实现的:
header.html:
<ul>
<li><a>Link</a></li>
<li><a>Link</a></li>
<li><a>Link</a></li>
</ul>
{% if show_diskspace %}
<p>You need more space!</p>
{% endif %}
base.html
{% block header %}
{% include "header.html" %}
{% endblock %}
album.html
{% extends "base.html" %}
{% block header %}
{% include "header.html" with show_diskspace="True" %}
{% endblock %}
【问题讨论】:
-
您要替换“测试”还是附加一些内容?
-
替换。从技术上讲,该块应该是空的,我只有“测试”,所以我知道是否对该块采取了任何行动。
-
包含模板中的块不能在包含它们的模板中被覆盖。
-
啊是的,好像是这样,我想我会尝试另一条路线,谢谢你的尝试:)
-
我已经更新了我的答案。请看那个。
标签: python django django-templates django-1.4