Die Schleifenvariable von Jinja ist in Include-D-Vorlagen nicht verfügbar
-
27-10-2019 - |
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 include
D 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 include
D Vorlage, aber nicht die loop
Variable.
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 loop
S Eigenschaften und macht es für mich klarer in der enthaltenen Vorlage, was die Variable ist.