2011-04-28 50 views
5

也许这是一个非问题,但是如何在不处于循环中时利用Django {% cycle %}功能或类似功能?具体来说,我有一个手动编写的HTML表格,因为它不是循环中需要做的事情。我要对行交替,就像这样:Django模板循环用于交替行 - 无循环

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

但我不会使用一个循环,所以这个结果总是在even。我不希望出现一种情况,我想稍后插入一行,然后必须手动更改下面所有行的类。我只是小气?如何循环而不会陷入循环?

回答

10

有专门使用cycle外循环对the docs一节:

在某些情况下,你可能想指从环外的周期的下一个值。要做到这一点,只需要给{%循环%}标签的名称,使用“为”,类似这样的:

{% 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 %}上的每一行。