2010-02-12 72 views
7

我在Django {% cycle %}模板標籤中遇到了一個有趣的「疏漏」。這已被列爲a bug,但我想知道是否有解決方法?{%cycle%}解決了嵌套for循環嗎?

{% for r1 in range_0_2 %} 
    {% for r2 in range_0_3 %} 
    {{ r1 }}-{{ r2 }}-{{ cycle 'even' 'odd' }} 
    {% endfor %} 
{% endfor %} 

這產生了:

0-0-even 
0-1-odd 
0-2-even 
1-0-odd 
1-1-even 
1-2-odd 

它應該產生:

0-0-even 
0-1-odd 
0-2-even 
1-0-even 
1-1-odd 
1-2-even 

回答

10

我已經在我的模板注意到了同樣的問題。

您可以使用一種變通方法如下所示:

{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %} 
1

我用「包括」爲內環內容

{% regroup employee_bypos_list by pos as by_pos %} 
{% for pos_set in by_pos %} 
    <h2>«{{ pos_set.grouper.address }}»</h2> 
    {% with pos_set.list as employee_list %} 
     {% include 'website/employee/_staff_by_post.html' %} 
    {% endwith %} 
{% endfor %} 
+0

僅供參考,將在for循環內的包括,如果真能殺死表現你不小心。 – speedplane