我将列表传递给视图。我的数组如下所示:[football, basketball, soccer]
。在我看来,我想展示这样的东西:
1. football
2. basketball
3. soccer
这意味着我必须遍历传递给数组的列表,对元素执行for循环。我将如何在模板文件中执行此操作?
对于每个元素,我必须获取其索引并向其添加1。现在,我不知道如何在视图中执行此操作。我想这样做的一种方法是创建一个字典,如{'1', 'football': '2', 'basketball': '3', 'soccer'}
,但由于我已经有了列表格式的数据,我宁愿不转换它。
答案 0 :(得分:30)
您需要forloop.counter模板变量。
for循环设置了循环中可用的许多变量:
forloop.counter 循环的当前迭代(1索引)
所以你的代码看起来像是:
{% for sport in sports %}
<p>{{forloop.counter}}. {{ sport }}</p>
{% endfor %}
当然,只需像在问题中一样显示数据,更简单的方法就是在有序列表中显示项目,浏览器会为您编号:
<ol>
{% for sport in sports %}
<li>{{ sport }}</li>
{% endfor %}
</ol>
答案 1 :(得分:3)
@nrabinowitz的答案是一个很好的解决方案,如果你想在模板中使用它。但我认为你要求从这个角度来做这件事。
从列表中获取索引和值的最佳方法是使用enumerate
函数,如下所示:
>>> sports = ['football', 'basketball', 'soccer']
>>> for i,sport in enumerate(sports):
... print "%d. %s" % (i, sport)
0. football
1. basketball
2. soccer
或者,如果您想要一个基于1的索引:
>>> for i,sport in enumerate(sports):
... print "%d. %s" % (i+1, sport)
1. football
2. basketball
3. soccer
答案 2 :(得分:0)
由以上answer提供
如果某人需要使用循环迭代计数的条件,则可以使用此代码块。
2
用于说明integer
。
{% if forloop.counter == 2 %}
do something what you want for second iteration
{% endfor %}