1

为了更容易的模板继承,我想动态确定父母{% block %}名称的名称。

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

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

还有一个:

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

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

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

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

4

1 回答 1

1

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

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

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

于 2012-09-13T15:36:06.913 回答