2009-08-02 24 views
13

tengo muchos campos en mi forma yo estaba tratando de aplicar diferentes css a vecino campos como formaplantilla de Django forloop.counter pregunta

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

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

si hay alguna manera como

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

para forloop. mostrador ?

¡Muchas gracias!

Respuesta

24

El cycle tag está diseñado para este tipo de problema:

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

Estoy de acuerdo con Jarret que cycle es mejor aquí, pero para realmente responder a la pregunta, la operación %2==0 se pueden replicar mediante el filtro divisibleby.

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

Otra cosa a tener en cuenta es que, dado que este es un problema extremo delantero - el estilo es lo que estás tratando de efecto - se puede resolver en la parte delantera. Hay un buen ejemplo en la parte inferior de este A List Apart article. Por supuesto, si ya tienes el código de Django funcionando, no tiene sentido hacerlo ahora.

+0

Sí, pero las plantillas son sin duda la parte frontal de Django (la "V" en MVC). – DrBloodmoney

+0

Derecho que, más bien, es un problema de diseño que se puede manejar alternativamente desde el lado del cliente (CSS). – bennylope

Cuestiones relacionadas