我有兩個列表: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次迭代?