如何在django模板中动态设置块名?
为了便于模板继承,我想动态确定父级的名称{%block%}名称 为此,我有两个父模板。主要是这样的如何在django模板中动态设置块名?,django,django-templates,Django,Django Templates,为了便于模板继承,我想动态确定父级的名称{%block%}名称 为此,我有两个父模板。主要是这样的 # main parent ... {% block details %}{% endblock %} ... 另一个: # other parent ... {% block content %}{% endblock %} ... 由于此模板经常使用,并且块命名的更改将导致大量工作,因此我尝试使用布尔main_模板指示在子模板中使用哪个块名称: # child template ... {
# main parent
...
{% block details %}{% endblock %}
...
另一个:
# other parent
...
{% block content %}{% endblock %}
...
由于此模板经常使用,并且块命名的更改将导致大量工作,因此我尝试使用布尔main_模板
指示在子模板中使用哪个块名称:
# child template
...
{% block main_template|yesno:'details,content' %}
...
{% endblock %}
...
这是行不通的。是否有其他方法可以获得我描述的行为?不,这不起作用--{%block%}的参数是一个标签,而不是一个值,因此不能在那里使用上下文变量
也许有一些方法可以解决这个问题,但它们是不可维护的。老实说,最好在不同的基本模板之间对齐块名(这实际上应该只是一个搜索和替换操作)
Django模板继承的工作方式是,子模板需要了解其父模板的块结构。如果您有一个子模板可以从几个不同的父模板继承,那么它们实际上都需要具有相同的结构。不,这不起作用--{%block%}的参数是一个标签,而不是一个值,因此您不能在那里使用上下文变量
也许有一些方法可以解决这个问题,但它们是不可维护的。老实说,最好在不同的基本模板之间对齐块名(这实际上应该只是一个搜索和替换操作)
Django模板继承的工作方式是,子模板需要了解其父模板的块结构。如果您有一个子模板可以从几个不同的父模板继承,那么它们实际上都需要具有相同的结构