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上循环两次,这是必要的
如果它是一个已经计算并存储在内存中的列表,那么这并不重要
在实践中何时会发生这种情况(本例之外)?如果您有一个列表,其中列表中的每个元素引用另一个列表(例如,引导处理选项卡化的方式)
我看不出这有多复杂