Estoy buscando una forma de usar algo como el operador de módulo en django. Lo que estoy tratando de hacer es agregar un nombre de clase a cada cuarto elemento en un ciclo.
Con módulo se vería así:
{% for p in posts %}
<div class="post width1 height2 column {% if forloop.counter0 % 4 == 0 %}first{% endif %}}">
<div class="preview">
</div>
<div class="overlay">
</div>
<h2>p.title</h2>
</div>
{% endfor %}
Por supuesto, esto no funciona porque% es un carácter reservado. Hay alguna otra manera de hacer esto?
templatetag
etiqueta, pero que las cubiertas{%
,%}
, etc. (no%
).Respuestas:
Necesita divisibleby , un filtro django integrado.
fuente
No puede usar el operador de módulo en las etiquetas de plantilla de Django, pero sería bastante fácil escribir un filtro para hacerlo. Algo como esto debería funcionar:
Y entonces:
Incluso podrías hacer algo como esto, en su lugar:
Y entonces:
O podrías usar la
cycle
etiqueta:fuente
Parece que solo deberías usar la etiqueta de ciclo. Etiquetas de plantilla integradas
fuente
Ejemplo de filas y columnas de Bootstrap. Fila nueva cada 4 elementos. También cierre la última fila incluso si hay menos de 4 elementos.
myapp / templatetags / my_tags.py
plantilla html
fuente