Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 - Fatal编程技术网

Django模板:在同一模板中扩展块?

Django模板:在同一模板中扩展块?,django,Django,下面是设置(此处简化): 在我的模板文件中,我有两个部分也想通过循环字典列表来添加内容,例如: <div class="stuff-a"></div> <div class="stuff-b"></div> {% for thing in list %} <!-- goes into div a --> <!-- goes into div b --> {% endfor %} {%用于列表%中的内容} {%

下面是设置(此处简化):

在我的模板文件中,我有两个部分也想通过循环字典列表来添加内容,例如:

<div class="stuff-a"></div>
<div class="stuff-b"></div>


{% for thing in list %}
  <!-- goes into div a -->
  <!-- goes into div b -->
{% endfor %}

{%用于列表%中的内容}
{%endfor%}
我认为这会奏效:

<div class="stuff-a">
    {% block diva %}{% endblock %}
</div>
<div class="stuff-b"> 
    {% block divb %}{% endblock %}
</div>


{% for thing in list %}
  {% block diva %} thing.stuff_for_div_a {% endblock %}
  {% block divb %} thing.stuff_for_div_b {% endblock %}
{% endfor %}

{%block diva%}{%endblock%}
{%block divb%}{%endblock%}
{%用于列表%中的内容}
{%block diva%}thing.stuff_for_div_a{%endblock%}
{%block divb%}thing.stuff_for_div_b{%endblock%}
{%endfor%}
然后django抱怨我不止一次地使用每一个块——真让我感到羞耻

现在解决这个问题的方法(保持相同的模式)是创建一个中间模板文件,然后扩展它

我的问题是,有没有一种方法可以在django模板中附加到不同的特定区域,而不必在列表或中间模板文件中循环两次

如果循环有点复杂,并且您不想在进行更改时更新两个循环,那么这一点很重要

在实践中何时会发生这种情况(本例之外)?如果您有一个列表,其中列表中的每个元素引用另一个列表(例如,引导处理选项卡化的方式)

现在解决这个问题的方法(保持相同的模式)是创建一个中间模板文件,然后扩展它

您也不能这样做,因为您不能在循环中使用
{%block%}
,原因与您不能在同一模板中多次使用块相同

我的问题是,有没有一种方法可以在django模板中附加到不同的特定区域,而不必在列表或中间模板文件中循环两次

不,你不能。如果你能做你想做的事情,那就必须在幕后重复两次

如果循环有点复杂,并且您不想在进行更改时更新两个循环,那么这一点很重要

如果循环是一个生成器,并且在每次迭代中计算下一个元素,那么这确实很重要。但在这种情况下,无论如何都不能在iterable上循环两次,这是必要的

如果它是一个已经计算并存储在内存中的列表,那么这并不重要

在实践中何时会发生这种情况(本例之外)?如果您有一个列表,其中列表中的每个元素引用另一个列表(例如,引导处理选项卡化的方式)

我看不出这有多复杂