重新排列django模板中的块

时间:2015-09-16 19:46:13

标签: django

我有一个基本视图模板和两个继承它的子项。虽然这两个孩子共享基础中定义的内容,但我希望以不同的顺序显示其中的一些内容。我希望以下内容可以正常工作,但这些块的显示顺序与两个模板上的父顺序相同。

父:

{% block foo %}
   Foo foo foo foo
{% endblock foo %}
{% block bar %}
   Bar bar
{% endblock bar %}
{% block baz %}
   Baz baz
{% endblock baz %}

儿童A

{% block foo %}
  {{ block.super }}
{% endblock foo %}
{% block bar %}
  {{ block.super }}
{% endblock bar %}
{% block baz %}
  {{ block.super }}
{% endblock baz %}

儿童B

{% block bar %}
  {{ block.super }}
{% endblock bar %}
{% block foo %}
  {{ block.super }}
{% endblock foo %}
{% block baz %}
  {{ block.super }}
{% endblock baz %}

2 个答案:

答案 0 :(得分:1)

Django模板无法正常工作。

文档说:“模板继承允许您构建一个基础”骨架“模板,其中包含您网站的所有常见元素,并定义子模板可以覆盖的块”。因此,子模板仅向父提供信息,块的内容。就这样。他们没有做任何安排。

您需要创建另一个基本模板并对其进行扩展以在页面上获取另一个块顺序。

答案 1 :(得分:0)

我通过将每个块移动到自己的模板中来解决这个问题,然后

{% include "foo.html" %}
{% include "bar.html" %}
{% include "baz.html" %}

按照我需要的顺序。