我尝试在Django tempalte中实现一个forloop,每个周期迭代两个项目,这样
{% for c in cList%}
<ul class="ListTable">
<li>
{{ c1.name }}
</li>
<li>
{{ c2.name }}
</li>
</ul>
{% endfor %}
我知道我的代码不是执行此操作的正确方法,但无论如何我都找不到。
我真的很感谢任何建议
谢谢
最佳答案
如果您可以控制cList
的列表结构,为什么不将其设为2个元素的元组列表或2个元素的列表列表,例如
#in the view
cList = [(ob1, ob2),
(ob3, ob4)]
和模板中的
{% for c1, c2 in cList %}
<ul class="ListTable">
<li>
{{ c1.name }}
</li>
<li>
{{ c2.name }}
</li>
</ul>
{% endfor %}
您也可以使用
zip
函数来促进cList的创建,或定义一个从对象列表创建这种结构的函数,例如
def pack(_list):
new_list = zip(_list[::2], _list[1::2])
if len(_list) % 2:
new_list.append((_list[-1], None))
return new_list