Django不支持退出循环操作。如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目。同理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。(请参看本章稍后的理念和限制小节,了解下决定这个设计的背后原因)</p>

{% for %} 标签在循环中设置了一个特殊的 forloop 模板变量。这个变量能提供一些当前循环进展的信息:</p>

forloop.counter 总是一个表示当前循环的执行次数的整数计数器。这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。例子如下:

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

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

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

forloop.first 是一个布尔值。在第一次执行循环时该变量为True,在下面的情形中这个变量是很有用的。</p>

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

forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。例子在此:

forloop 变量仅仅能够在循环中使用,在模板解析器碰到 {% endfor %} 标签时, forloop 就不可访问了。</p>

Context和forloop变量

在一个 {% for %} 块中,已存在的变量会被移除,以避免 forloop 变量被覆盖。Django会把这个变量移动到 forloop.parentloop 中。通常我们不用担心这个问题,但是一旦我们在模板中定义了 forloop 这个变量(当然我们反对这样做),在 {% for %} 块中它会在 forloop.parentloop 被重新命名。<br />

for
轮询数组中的每一元素。例如显示一个给出的运动员的序列athlete_list:

    {% for athlete in athlete_list %}

  • {{ athlete.name }}
  • {% endfor %}

你同样可以反过来用{% for obj in list reversed %}轮询一个列表。<br />
for循环设置了许多循环中有用的变量(见表F-1)。<br />
Inline literal start-string without end-string.
表 F-1. {% for %}循环中的可用变量
变量名描述<br />
forloop.counter 循环的当前重复值 (标示为1)。<br />
forloop.counter0 循环的当前重复值 (标示为0)。<br />
forloop.revcounter 循环到最后的重复数 (标示为1)。<br />
forloop.revcounter0 循环到最后的重复数 (标示为0)。<br />
forloop.first 第一次循环则为True。<br />
forloop.last 最后一次循环则为True 。<br />
forloop.parentloop 用于嵌套循环,该循环位于当前循环之上。<br />

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注