Django cycle 迭代标签

迭代

cycle 标签允许您针对不同的迭代执行不同的任务。

cycle 标签接受参数,第一次迭代使用第一个参数,第二次迭代使用第二个参数等等。

{% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' %}

如果您想为每次迭代使用新的背景颜色,您可以使用 cycle 标签:

实例

<ul>
  {% for x in members %}
    <li style='background-color:{% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' %}'>
      {{ x.firstname }}
    </li>
  {% endfor %}
</ul> 
运行实例 »

如果迭代到达参数的末尾,它会重新开始:

实例

<ul>
  {% for x in members %}
    <li style='background-color:{% cycle 'lightblue' 'pink' %}'>
      {{ x.firstname }}
    </li>
  {% endfor %}
</ul> 
运行实例 »

迭代参数作为变量

在第一个示例中,参数值直接显示在循环中,但您也可以将参数值保存在变量中,以便以后使用:

实例

将颜色值存储在一个名为 bgcolor 的变量中,然后在迭代中将其用作背景颜色:

<ul>
  {% for x in members %}
    {% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' as bgcolor silent %}
    <li style='background-color:{{ bgcolor }}'>
      {{ x.firstname }}
    </li>
  {% endfor %}
</ul> 
运行实例 »

您注意到 silent 关键字了吗? 确保添加这个,否则参数值将在输出中显示两次:

实例

与上面的示例相同,但没有 silent 关键字:

<ul>
  {% for x in members %}
    {% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' as bgcolor %}
    <li style='background-color:{{ bgcolor }}'>
      {{ x.firstname }}
    </li>
  {% endfor %}
</ul> 
运行实例 »

重置迭代

您可以使用 {% resetcycle %} 标签强制迭代重新开始:

实例

3个迭代后重新开始迭代:

<ul>
  {% for x in members %}
    {% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' as bgcolor silent %}
    {% if forloop.counter == 3 %}
      {% resetcycle %}
    {% endif %}
    <li style='background-color:{{ bgcolor }}'>
      {{ x.firstname }}
    </li>
  {% endfor %}
</ul> 
运行实例 »