Django模板 forloop的使用

本文介绍了Django模板中{% for %}循环内部的forloop变量,包括forloop.counter、forloop.counter0、forloop.revcounter、forloop.revcounter0、forloop.first和forloop.last等属性的使用,以及如何在嵌套循环中使用forloop.parentloop。这些属性有助于在循环中获取迭代次数、判断是否为第一次或最后一次循环等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

{% for %}标签内部模板变量forloop

在{% for %}循环内部,可以访问一个名为forloop的模板变量。这个变量有若干属性,通过它们可以获知循环进程的一些信息。

 

forloop.counter

forloop.counter 的值是一个整数,表示循环的次数。这个属性的值从 1 开始,因此第一次循环时,forloop.counter 等于 1 。

{% for item in todo_list %}
<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}

forloop.counter0

forloop.counter0 与 forloop.counter 类似,不过是从零开始的。第一次循环时,其值为 0 。

 

forloop.revcounter

forloop.revcounter的值是一个整数,表示循环中剩余的元素数量。第一次循环时, forloop.revcounter 的值是序列中要遍历的元素总数。最后一次循环时, forloop.revcounter的值为 1 。

 

 forloop.revcounter0

forloop.revcounter0 与 forloop.revcounter类似,不过索引是基于零的。第一次循环时, forloop.revcounter0的值是序列中元素数量减去一。最后一次循环时, forloop.revcounter0 的值为 0 。

 

forloop.first

forloop.first 是个布尔值,第一次循环时为 True 。需要特殊处理第一个元素时很方便:

{% for object in objects %}
    {% if forloop.first %}
        <li class="first">
    {% else %}
        <li>
    {% endif %}
    {{ object }}
    </li>
{% endfor %}


forloop.last


forloop.last是个布尔值,最后一次循环时为True 。经常用它在一组链接之间放置管道符号:

{% for link in links %}
    {{ link }}{% if not forloop.last %} | {% endif %}
{% endfor %}



上述模板代码的输出可能是:

Link1 | Link2 | Link3 | Link4

此外,还经常用它在一组单词之间放置逗号:

<p>Favorite places:</p>
{% for p in places %}
    {{ p }}{% if not forloop.last %}, {% endif %}
{% endfor %}


forloop.parentloop


在嵌套的循环中, forloop.parentloop引用父级循环的 forloop 对象。下面举个例子:

{% for country in countries %}
    <table>
    {% for city in country.city_list %}
        <tr>
        <td>Country #{{ forloop.parentloop.counter }}</td>
        <td>City #{{ forloop.counter }}</td>
        <td>{{ city }}</td>
        </tr>
    {% endfor %}
    </table>
{% endfor %}



小贴士

forloop 变量只在循环内部可用。模板解析器遇到 {% endfor %} 时, forloop 随之消失。 
上下文和 forloop 变量 
在 {% for %} 块中,现有变量会让位,防止覆盖 forloop 变量。Django 把移动的上下文放到 
forloop.parentloop 中。通常,你无须担心,但是如果有名为 forloop 的模板变量(不建议这 
么做),在 {% for %} 块中会重命名为 forloop.parentloop 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值