2012-09-13 63 views
1

为了更容易的模板继承,我想动态地确定一个父母的姓名{%block%}名称。如何在django模板中动态设置块名称?

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

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

而另外一个:

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

因为这个模板是经常使用和块命名的改变会导致大量的工作,我想的东西用布尔main_template指示要在子模板中使用哪个块名称:

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

这不起作用。有没有其他的方式来获得我所描述的行为?

回答

1

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

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

Django模板继承的工作方式,子模板需要了解其父模板的块结构。如果你有一个可以继承几个不同父母的子模板,那么他们真的都需要有相同的结构。