Je cherche un moyen d'utiliser quelque chose comme l'opérateur modulus dans django. Ce que j'essaie de faire, c'est d'ajouter un nom de classe à chaque quatrième élément d'une boucle.
Avec module, cela ressemblerait à ceci:
{% 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 %}
Bien sûr, cela ne fonctionne pas car% est un caractère réservé. Y a-t-un autre moyen de faire ça?
templatetag
étiquette, mais qui couvre{%
,%}
etc. (non%
).Réponses:
Vous avez besoin de divisibleby , un filtre django intégré.
la source
Vous ne pouvez pas utiliser l'opérateur modulus dans les balises de gabarit Django, mais il serait assez facile d'écrire un filtre pour le faire. Quelque chose comme ça devrait fonctionner:
Puis:
Vous pouvez même faire quelque chose comme ça à la place:
Puis:
Ou vous pouvez utiliser la
cycle
balise:la source
Il semble que vous devriez simplement utiliser l'étiquette de cycle. Balises de modèle intégrées
la source
Exemple de lignes et de colonnes Bootstrap. Nouvelle ligne tous les 4 éléments. Fermez également la dernière ligne même s'il y a moins de 4 éléments.
myapp / templatetags / my_tags.py
modèle html
la source