2009-08-02 15 views
13

Mam wiele pól w moim formularzu starałem się zastosować inną css do sąsiada tworzy pola jakDjango szablon forloop.counter pytanie

<li class='thiscolor' > 
    <field> 
</li> 

<li class='thatcolor' > 
    <field> 
</li> 

jeśli istnieje sposób, jak

{% for field in form %} 
    **{% if forloop.counter%2 == 0 %}** 
    <li class='thiscolor'> 
    {% else%} 
    <li class='thatcolor'>  
    {%endif} 
    {{field}} 
    </li> 
{% endfor %} 

dla forloop. licznik ?

Wielkie dzięki!

Odpowiedz

24

cycle tag jest przeznaczony dla tego typu problemu:

{% for field in form %} 
    <li class="{% cycle 'thiscolor' 'thatcolor' %}">{{ field }}</li> 
{% endfor %} 
21

zgadzam się z Jarret że cycle najlepiej jest tutaj, ale faktycznie odpowiedzieć na pytanie, operacja %2==0 mogą być replikowane za pomocą filtra divisibleby.

{% if forloop.counter|divisibleby:"2" %} 
1

Inną rzeczą, aby pamiętać, że ponieważ jest to problem Zaczepy - stylistyka to co starasz się efekt - można go rozwiązać na przednim końcu. Dobry przykład znajduje się na dole tego A List Apart article. Oczywiście, jeśli masz już działający kod Django, nie ma sensu robić tego teraz.

+0

Tak, ale szablony są z pewnością częścią front-endową Django ("V" w MVC). – DrBloodmoney

+0

Racja to raczej kwestia stylu, która może być alternatywnie obsługiwana po stronie klienta (CSS). – bennylope