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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Antworten