Seite 1 von 1

Django: {% ifequal forloop.counter < 5 %} möglich???

Verfasst: Sonntag 5. Juli 2009, 22:27
von ferix
Ist es mit der Django-Template-Sprache möglich eine "kleiner Abfrage" zu tätigen:

{% if forloop.counter < 5 %}

Meine jetzt nicht, ob es genauso möglich ist, sondern das auf eine Art zu realisieren ist?

Wenn nicht müsste ich eben im View dementsprechend reagieren, was ich bei keiner anderen Möglichkeit auch gerne mache und kein Problem ist.

Aber mich würde trotzdem interessieren ob so etwas möglich ist.

Verfasst: Sonntag 5. Juli 2009, 22:42
von Leonidas
Nein, die Django-Template-Engine kennt keine Vergleichsoperatoren sondern nur Template-Tags wie ``ifequal`` und ``ifnotequal``. Alle anderen müsste man sich selbst schreiben (das wurde teilweise auch gemacht). Aber generell ist die Meinung, dass man solche Abfragen gar nicht erst in den Templates haben sollte, da sie ein Anzeichen für zu viel Logik im Template sind.

Verfasst: Montag 6. Juli 2009, 21:20
von sma
Der hässliche Workaround für Django wäre

{% if forloop.counter|less_than:5 %}

und jetzt einen eigenen `less_than`-Filter schreiben. Auf http://djangosnippets.org gibt es AFAIK mehrere Versuche (z.B. #1350), dass `if`-Tag von Django aufzuboren. Da könnte man mal gucken. Und wie sagte Simon Willison so schön: Jedes Mal, wenn man {% endifnotequal %} benutzt, tritt Gott das Django-Pony.

Stefan