Django中forloop模板变量

来源:互联网 发布:linux rpm 位置 编辑:程序博客网 时间:2024/05/15 19:29

Django中的{% for .. %} 循环中有一个forloop模板变量,该变量可用来提示循环进度信息。
forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。

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

forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。

forloop.revcounter 是表示循环中剩余项的整型变量。 在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。

forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。 在第一次执行循环时,该变量会被置为序列的项的个数减1。

forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为True, 在下面的情形中这个变量是很有用的:

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

forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 一个常见的用法是在一系列的链接之间放置管道符(|)

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

上面的模板可能会产生如下的结果:

Link1 | Link2 | Link3 | Link4

另一个常见的用途是为列表的每个单词的加上逗号,

{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}

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就不可访问了。

0 0