Ich suche nach einer Möglichkeit, so etwas wie den Moduloperator in Django zu verwenden. Ich versuche, jedem vierten Element in einer Schleife einen Klassennamen hinzuzufügen.
Mit Modul würde es so aussehen:
{% 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 %}
Dies funktioniert natürlich nicht, da% ein reserviertes Zeichen ist. Gibt es eine andere Möglichkeit, dies zu tun?
templatetag
Tag, aber das Cover{%
,%}
usw. (nicht%
).Antworten:
Sie benötigen divisibleby , einen eingebauten Django-Filter.
quelle
Sie können den Moduloperator nicht in Django-Vorlagen-Tags verwenden, aber es wäre einfach genug, einen Filter dafür zu schreiben. So etwas sollte funktionieren:
Und dann:
Sie könnten stattdessen sogar so etwas tun:
Und dann:
Oder Sie könnten das
cycle
Tag verwenden:quelle
Es hört sich so an, als ob Sie nur das Zyklus-Tag verwenden sollten. Integrierte Vorlagen-Tags
quelle
Beispiel für Bootstrap-Zeilen und -Spalten. Neue Zeile alle 4 Elemente. Schließen Sie auch die letzte Reihe, auch wenn weniger als 4 Elemente vorhanden sind.
myapp / templatetags / my_tags.py
HTML-Vorlage
quelle