Frage

Dies stammt direkt aus meiner Django-Vorlage:

{% for day in days %}
  <!-- {% cycle 'day' 'day' 'day last' as cls %} -->
  {% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
  ...
  {% endrounded %}
{% endfor %}

Ich habe das auskommentiert {% cycle %} weil ich es nur zum Einstellen verwendecls" Zu "day last" jede dritte Iteration in der Schleife.Gibt es eine bessere Möglichkeit, dies zu tun, ohne der Ansicht Code hinzuzufügen?(Die Leute sagen, dass Logik nicht in Vorlagen enthalten sein sollte, aber umgekehrt ist es fast noch schlimmer.)

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob ich verstehe, warum Sie ein Problem haben, da Ihre aktuelle Lösung scheint zu funktionieren. Ich glaube nicht, dass Sie die HTML-Kommentare müssen, da {% cycle %} mit as nicht ausgegeben etwas tut, aber abgesehen davon, dass es scheint in Ordnung.

Wenn Sie jedoch eine andere Art und Weise wollen, es zu tun, könnten Sie den divisibleby Filter verwenden:

{% for day in days %}
  {% if forloop.counter|divisibleby:3 %}
     {% rounded "black" "day last" %}
  {% else %}
     {% rounded "black" "day" %}
  {% endif %}
{% endfor %}

, aber ich glaube nicht, das ist besser als das, was Sie bereits haben.

Andere Tipps

'Neu in der Entwicklerversion von Django'

Der Zyklus 'als' Tag hat jetzt einen 'stillen' Modus:

http://docs.djangoproject.com/en/dev / ref / templates / builtins / # Zyklus

http://code.djangoproject.com/ticket/13567

Anwendungslogik nicht in Ihren Vorlagen sein. Präsentationslogik gehört es (das ist, was dies zu sein scheint). Ich würde ihn dort.

Ähm...das ist es cycle Tag ist für.Ich habe keine Ahnung, warum Sie versuchen, es zu vermeiden, aber Sie sollten wissen:

  1. Jede Logik, die die selektive Anwendung einer Regel erfordert, erfordert Python-Code, da Vorlagencode keine Zuweisungen zu Variablen vornimmt.
  2. Der Python-Code muss entweder von einem Templatetag oder einer Ansichtsfunktionslogik aufgerufen werden.

Wenn Sie also keine Ansichtslogik verwenden, bleiben Sie bei einem Template-Tag hängen.Entweder schreiben Sie Ihr eigenes oder Sie verwenden ein integriertes. cycle scheint ungefähr so ​​einfach zu sein wie alle anderen.Was ist das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top