Frage

Ich möchte die Klasse Attribut eines li nach jeweils 4 Elemente ändern (das bedeutet, 5., 9., 13. sollte li Elementklassen geändert werden).

Ich habe etwas versucht, wie unten, aber es gab mir einen Syntaxfehler: Kann den Rest nicht analysieren: '% 4' von 'forloop.counter% 4'

{% for p in plist %}
{% ifequal forloop.counter%4 1 %}
    <li class="clear"> {{p.title}} </li>
{% else %}
    <li> {{p.title}} </li>
{% endifequal %}
{% endfor %}

Ich werde es begrüßen, wenn jemand wird mir eine funktionierende Lösung vorschlagen.

War es hilfreich?

Lösung

Sie können nicht tun Auswertungen wie in der django-Vorlage. Der IfEqual Tag erwartet nur zwei Parameter, und vergleicht sie. Sie würden eine Art Filter benötigen.

Sie können jedoch den Zyklus-Tag statt:

{% for p in plist %} 
    {% if forloop.first %} 
        <li> {{p.title}} </li>
    {% else %}
        <li{% cycle '' '' '' ' class="clear"' %}> {{p.title}} </li> 
    {% endif %}
{% endfor %}

EDIT: Wie erwähnt, die ursprüngliche Lösung machte die 4, 8, usw., statt vom 5. ab. Ich habe die Antwort aktualisiert, um die Änderungen von Tolga aufzunehmen.

Andere Tipps

Sie können forloop.counter0 und Filter divisibleby verwenden:

{% ifequal forloop.counter0|divisibleby:"4" %}

Die Logik wäre komplex, aber die divisibleby Filter helfen könnte.

Sie wollen nicht, es so zu tun - das ist, was cycle ist.

{% for p in plist %}
        <li{% ifnotequal forloop.counter 1 %}{% cycle ' class="clear"' '' '' '' %}{% endifnotequal %}>{{p.title}</li>
{% endfor %}

Das Beispiel löscht den 5., 9., 13., etc.

Edit:. Hutspitze @cpharmston

ich damit ein bisschen zu kämpfen, versuchen Bootstrap-Karten bis 3 pro Karte-Deck zu begrenzen.

Dies funktioniert in Django 2.1 und höher, um eine Reihe zu Gruppen von 3 zu begrenzen:

{% ifequal forloop.counter|divisibleby:"3" True %}   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top