【问题标题】:Rearrange blocks in django template重新排列 django 模板中的块
【发布时间】:2015-09-16 19:46:13
【问题描述】:

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

家长:

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

儿童甲

{% 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 %}

【问题讨论】:

  • 没错;这正是模板系统的工作原理。您对此有什么具体问题吗?
  • 对不起,我认为很明显,由于实际行为与我的预期不同,我在问如何得到我想要的。

标签: django


【解决方案1】:

Django 模板不是这样工作的。

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

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

【讨论】:

  • 是的,这也是我的理解。我误解了同事提出的解决方案。
【解决方案2】:

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

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

按照我需要的顺序。

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2020-05-20
    • 2013-08-16
    • 2010-10-05
    相关资源
    最近更新 更多