Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django模板中动态设置块名?_Django_Django Templates - Fatal编程技术网

如何在django模板中动态设置块名?

如何在django模板中动态设置块名?,django,django-templates,Django,Django Templates,为了便于模板继承,我想动态确定父级的名称{%block%}名称 为此,我有两个父模板。主要是这样的 # main parent ... {% block details %}{% endblock %} ... 另一个: # other parent ... {% block content %}{% endblock %} ... 由于此模板经常使用,并且块命名的更改将导致大量工作,因此我尝试使用布尔main_模板指示在子模板中使用哪个块名称: # child template ... {

为了便于模板继承,我想动态确定父级的名称{%block%}名称

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

# main parent
...
{% block details %}{% endblock %}
...
另一个:

# other parent
...
{% block content %}{% endblock %}
...
由于此模板经常使用,并且块命名的更改将导致大量工作,因此我尝试使用布尔
main_模板
指示在子模板中使用哪个块名称:

# child template
...
{% block main_template|yesno:'details,content' %}
...
{% endblock %}
...
这是行不通的。是否有其他方法可以获得我描述的行为?

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

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

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

不,这不起作用--{%block%}的参数是一个标签,而不是一个值,因此您不能在那里使用上下文变量

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

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