Django-在模板的for循环中迭代数字


250

我的django模板中显示以下内容的for循环如下:我想知道是否有可能在循环中迭代一个数字(在以下情况下为i)。还是我必须将其存储在数据库中,然后以days.day_number的形式查询它?

{% for days in days_list %}
    <h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}

Answers:


592

Django提供了它。您可以使用以下任一方法:

  • {{ forloop.counter }}索引从1开始。
  • {{ forloop.counter0 }}索引从0开始。

在模板中,您可以执行以下操作:

{% for item in item_list %}
    {{ forloop.counter }} # starting index 1
    {{ forloop.counter0 }} # starting index 0

    # do your stuff
{% endfor %}

在更多信息:为| 内置模板标签和过滤器| Django文档


1
但是它的长度为1。
VIKAS KOHLI

2
嵌套循环怎么样?我们如何告诉django是要计算内部循环还是外部循环?
蒂姆·沃克

4
@ crey4fun,请forloop.parentloop参阅参考文档以获取更多信息。
罗汉

89

也可以使用此:

{% if forloop.first %}

要么

{% if forloop.last %}

10
这不是问题的答案,但仍然是许多将搜索此问题的人的答案。好东西!
kontur

1

[Django HTML模板目前不支持索引],但是您可以实现目标:

如果您在views.py中的Dictionary中使用Dictionary,则可以使用key作为索引进行迭代。例:

{% for key, value in DictionartResult.items %} <!-- dictionartResult is a dictionary having key value pair-->
<tr align="center">
    <td  bgcolor="Blue"><a href={{value.ProjectName}}><b>{{value.ProjectName}}</b></a></td>
    <td> {{ value.atIndex0 }} </td>         <!-- atIndex0 is a key which will have its value , you can treat this key as index to resolve-->
    <td> {{ value.atIndex4 }} </td>
    <td> {{ value.atIndex2 }} </td>
</tr>
{% endfor %}

否则,如果您在字典中使用列表,则不仅可以控制第一次和最后一次迭代,而且可以控制所有索引。例:

{% for key, value in DictionaryResult.items %}
    <tr align="center">
    {% for project_data in value %}
        {% if  forloop.counter <= 13 %}  <!-- Here you can control the iteration-->
            {% if forloop.first %}
                <td bgcolor="Blue"><a href={{project_data}}><b> {{ project_data }} </b></a></td> <!-- it will always refer to project_data[0]-->
            {% else %}
                <td> {{ project_data }} </td> <!-- it will refer to all items in project_data[] except at index [0]-->
            {% endif %}
            {% endif %}
    {% endfor %}
    </tr>
{% endfor %}

万一 ;)

//希望用字典,列表,HTML模板,For循环,内部循环,其他方式覆盖解决方案。有关更多方法的Django HTML Documentaion:https : //docs.djangoproject.com/en/2.2/ref/templates/builtins/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.