我有两个列表:Django模板:使嵌套循环内子循环做一定数量的迭代
list1 = ['a','b','c','d']
list2 = [1,2,3,4,5,6,7,8,9,10,11,12]
我想将它们呈现到模板如下:
a 1 2 3
b 4 5 6
c 7 8 9
d 10 11 12
因此,带有字母(list1
)的第一列是行索引。每行由从list2
填充的3个单元组成。
模板结构如下:
<div class="row">
<div class="row-index">row index from list1</div>
<div class="cell">cell1 from list2</div>
<div class="cell">cell2 from list2</div>
<div class="cell">cell3 from list2</div>
</div>
显然,这是不够的,在这里做一个简单的嵌套嵌套循环(对于list1
和list2
):
{% for row_index in list1 %}
<div class="row">
<div class="row-index">{{ row_index }}</div>
{% for cell in list2 %}
<div class="cell">{{ cell }}</div>
{% endfor %}
</div>
{% endfor %}
这将使得4行(这是正确的!),但每行将有12个单元,而不是每行3个。
不幸的是,zip_longest(list1, list2)
将无济于事,因为它增加了额外的'None'
元素到list1
,使其与list2
的长度相等。结果是4个实际行索引,其后是8个空行索引。所渲染的单元格对于每个单独的行都是相同的,例如, "a 1 1 1"
,"b 2 2 2"
等
在Django模板中是否有任何方式强制子循环(在嵌套循环内部)每次迭代其父循环只进行3次迭代?