Frage

Ich habe Code ähnlich wie folgt in einer meiner Jinja -Vorlage

{% for post in posts %}
    {% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}

Welches soll jeden rendern post im Inneren posts Sammlung, abhängig von der .type des Posts. Ich habe für jeden ein anderes Vorlage -Setup post.type. Und für diejenigen, die ich keine Vorlage habe, kehrt sie auf die zurück default Postvorlage.

Jetzt möchte ich, dass der Index des Posts von unten in den Postvorlagen angezeigt wird, die von bereitgestellt werden, loop.revindex. Aber aus irgendeinem Grund, wenn ich benutze loop.revindex In der Post -Vorlage erhalte ich einen Fehler, der sagt UndefinedError: 'loop' is undefined.

Also ist loop nicht verfügbar in der includeD Vorlagen? Ist das nach Design? Mache ich etwas falsch damit, wie ich meine Vorlagen organisiert habe, damit dies nicht verfügbar ist?

Bearbeiten Okay, ich habe mir eine Problemumgehung in der für Schleife ausgedacht, bevor ich meine Vorlage einbeziehe, tue ich das

{% set post_index = loop.revindex %}

und verwenden post_index In der Post -Vorlage. Nicht ideal, aber der einzige Weg. Ich möchte immer noch Ihre Lösungen kennen.

Bearbeiten 2 Eine andere Sache, ich kann auf die zugreifen post Variable in der includeD Vorlage, aber nicht die loop Variable.

War es hilfreich?

Lösung

Wenn mit dem möglich sein könnte {% with %} Aussage.

Versuche dies:

{% with %}
    {% set loop_revindex = loop.revindex %}
    {% include ... %}
{% endwith %}

Anstatt zu verwenden loop.revindex Verwenden Sie in der mitgelieferten Vorlage loop_revindex.

Andere Tipps

Eine andere Möglichkeit besteht darin, das gesamte zu bestehen loop Variable in die mitgelieferte Vorlage durch Einstellen einer lokalen Variablen auf loop

{% for post in posts %}
    {% set post_loop = loop %}
    {% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}

Dies gibt Ihnen Zugang zu allen loopS Eigenschaften und macht es für mich klarer in der enthaltenen Vorlage, was die Variable ist.

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