Estou procurando uma maneira de usar algo como o operador de módulo no django. O que estou tentando fazer é adicionar um nome de classe a cada quarto elemento em um loop.
Com o módulo, ficaria assim:
{% 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 %}
Claro que isso não funciona porque% é um caractere reservado. Existe alguma outra maneira de fazer isso?
templatetag
tag, mas que cobre{%
,%}
etc. (não%
).Respostas:
Você precisa divisível por um filtro django embutido.
fonte
Você não pode usar o operador modulus nas tags de modelo do Django, mas seria fácil escrever um filtro para isso. Algo assim deve funcionar:
E depois:
Você poderia até fazer algo assim:
E depois:
Ou você pode usar a
cycle
tag:fonte
Parece que você deve apenas usar a etiqueta de ciclo. Tags de modelo integradas
fonte
Exemplo de linhas e colunas de inicialização. Nova linha a cada 4 itens. Feche também a última linha, mesmo que haja menos de 4 itens.
myapp / templatetags / my_tags.py
modelo html
fonte