Django - 包含模板中的块标签不起作用 - 为什么?

时间:2012-07-07 17:23:43

标签: django include block

这个问题与this one有点类似,只有一个小改动 -

我在parent.html中有块标记,有些填充在调用模板中,其他一些填充在包含的模板中。包含的不起作用。例如:

#parent.html
<head>{% block head %}Parent head {% endblock %} </head>
<body> {% block body %} Parent body {% endblock %} 
</body>

#include.html

{%block body %} Child body {% endblock %}

#child.html
{% extends 'parent.html' %}

{% block head %}
Child head 
{% endblock %}

{% include 'include.html' %}

但这给出了输出: 孩子头 家长

所需的intsead:

孩子头 儿童身体

有任何变通方法吗?

1 个答案:

答案 0 :(得分:3)

这:

{% include 'include.html' %}

不包含在任何块中,并且不会呈现,正如您在回复中看到的那样。

以这种方式修改您的child.html:

#child.html
{% extends 'parent.html' %}

{% block head %}
Child head 
{% endblock %}

{% block body %}
    {% include 'include.html' %}
{% endblock %}

如果你想在child.html和include.html中定义一些html,那么你应该有:

#child.html
{% extends 'parent.html' %}

....

{% block body %}
    {% include 'include.html' %}
    some child html...
{% endblock %}

和include.html:

{% block body %}
    {{ block.super }}
    some include html...
{% endblock %}

这将呈现:

some child html
some include html