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.
Django: {% ifequal forloop.counter < 5 %} möglich???
-
- 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
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
{% 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