我正在构建一个django网页,但似乎遇到了障碍,因为我无法真正弄清楚如何将for循环的当前迭代(在模板中)用于多个列表:
{% for num in loopRange %}
<tr>
{% for num2 in subRange %}
<td>{% cycle list1 list2 list3 list4 %}</td>
{% endfor %}
</tr>
{% endfor %}
我在这里发现了两个类似的问题,我尝试使用循环,但是可惜这只是导致列表中的所有成员每次都被打印出来-并非完全出乎意料,但我无法弄清楚自己的一生.
我所拥有的是多个内容相似的列表,每个列表都是一行中的一列.因此,如果它是python,而我正在连接字符串,它将是这样的:
for i in xrange(5):
string = list1[i] + list2[i] + list3[i] + list 4[i]
所以基本上.除了两个xrange(在第一个示例中为loopRange和Subrange)之外,我还将每个列表作为上下文传递,我需要五行(每个列表有五个成员)和四列(四个列表).
编辑:我想简而言之,我想将列表索引称为foo [bar],在Django中作为foo.bar完成,但是bar显然不能是作为内容传递的可迭代范围的整数
谢谢!
解决方法:
我想说最好的方法是在将数据传递给模板之前,先处理视图中的数据.
例如,内置的zip可用于基于包含列的列表创建行列表:
rows = zip(list1, list2, list3, list4)
之后,模板可以逐行遍历行,并在需要时使用索引访问来访问列:
{% for row in rows %}
{{row.0}} {{row.1}} {{row.2}} {{row.3}}
{% endfor %}