交替行的Django模板循环 - 没有循环

时间:2011-04-28 14:22:07

标签: django django-templates

也许这不是问题,但是当你不在循环中时,如何使用Django {% cycle %}功能或类似的功能?具体来说,我有一个HTML表,我正在手写,因为它不是你需要在循环中做的事情。我希望行交替,如下所示:

   <tr class="{% cycle 'even' 'odd'%}"></tr>
   <tr class="{% cycle 'even' 'odd'%}"></tr>
   <tr class="{% cycle 'even' 'odd'%}"></tr>

但我没有使用循环,所以这总是导致even。我不希望以后想要插入一行,然后必须手动更改其下所有行的类。我只是小气吗?如何在没有循环的情况下循环?

1 个答案:

答案 0 :(得分:10)

有一节致力于在the docs上使用cycle以外的循环:

  

在某些情况下,您可能希望从循环外部引用循环的下一个值。要执行此操作,只需使用“as”为{%cycle%}标记指定名称,如下所示:

{% cycle 'row1' 'row2' as rowcolors %}
     

从那时起,您可以通过将循环名称作为上下文变量引用,在模板中的任何位置插入循环的当前值。如果要将循环移动到下一个值,则使用变量名称再次使用循环标记。那么,以下模板:

<tr>
    <td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td>
    <td class="{{ rowcolors }}">...</td>
</tr>
<tr>
    <td class="{% cycle rowcolors %}">...</td>
    <td class="{{ rowcolors }}">...</td>
</tr>
     

会输出:

<tr>
    <td class="row1">...</td>
    <td class="row1">...</td>
</tr>
<tr>
    <td class="row2">...</td>
    <td class="row2">...</td>
</tr>

因此,在您的情况下,您只需声明一次,然后在每一行调用{% cycle name %}