与和循环django模板标签的组合



我在django模板文件中有2个for循环,我想在第一个循环中生成循环模板的值,但在第二个循环中使用它。不知怎么的:

{% for item in firstloop %}
{% with requiredvalue=!cycle 'red' 'blue' 'green'! %}
{% for inneritem in innerforloop %}
{{ requiredvalue }}
{% endfor %}
{% endwith %}
{% endfor %}

当然,这不是一个有效的代码,但如果firstloop有3个元素,innerforloop有2个元素,我希望得到这样的结果:红色、红色、蓝色、蓝色、绿色、绿色。

它在模板方面是否可行?

谢谢。

现在,这看起来很奇怪,但你不能在Django的循环中进行计数。你应该做的是传递(字面上(所有的东西作为你的上下文的一部分,然后呈现它

假设您的上下文如下:

def get_context_data(self, **kwargs):
# ...
context['colors'] = ['red', 'green', 'blue']
context['loop_times'] = range(1, 2)

然后你的模板会看起来像这样:

{% for color in colors %}  // cycles red, green, blue
{% for i in loop_times %}  // repeats two times
<p>{{ color }}</p>
{% endfor %}
{% endfor %}

当然,我不知道你的color在类型上是什么,所以你可能需要自己做一些轻微的调整,但这只是它的工作原理。

不知道代码的完整上下文很难回答。但是,如果你的第二个for循环依赖于第一个,你可以做以下事情:

{% for item in firstloop %}
{% for subitem in item % }
// Do Stuff
{% endfor %}
{% endfor %}

如果第二个循环与第二个无关,则可以使用{%ifchanged%}

{% for item in firstloop %}
{% ifchanged item %}
{% for second_item in secondloop % }
// Do Stuff
{% endfor %}
{% endifchanged %}
{% endfor %}

最新更新