【问题标题】:How to set block name dynamically in django template?如何在 django 模板中动态设置块名称?
【发布时间】:2012-09-13 15:23:05
【问题描述】:

为了更简单的模板继承,我想动态确定父级{% block %} 的名称。

为此,我有两个父模板。主要是这样的

# main parent
...
{% block details %}{% endblock %}
...

还有一个:

# other parent
...
{% block content %}{% endblock %}
...

因为这个模板经常被使用,而且块命名的改变会导致很多工作,我尝试了一个布尔值main_template 来指示在子模板中使用哪个块名称:

# child template
...
{% block main_template|yesno:'details,content' %}
...
{% endblock %}
...

这不起作用。有没有其他方法可以得到我描述的行为?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    不,这不起作用——{% block %} 的参数是一个标签,而不是一个值,所以你不能在那里使用上下文变量。

    可能有一些方法可以解决这个问题,但它们不会是可维护的。老实说,最好花点精力(这实际上应该只是一个搜索和替换操作)来对齐不同基本模板之间的块名称。

    Django 模板继承的工作方式,子模板需要了解其父模板的块结构。如果您有一个可以从多个不同父级继承的子模板,那么它们实际上都需要具有相同的结构。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2013-03-05
      相关资源
      最近更新 更多