Angenommen, Sie haben den folgenden Code und fügen der for-Anweisung eine Variable namens cnt hinzu.
count_test.j2
{%- set cnt = 1 -%}
{%- for i in range(3) -%}
{%- set cnt = cnt + 1 -%}
{{ cnt }}
{% endfor -%}
result : {{ cnt }}
Wenn Sie sich das Ergebnis ansehen, sehen Sie, dass das der Variablen hinzugefügte Ergebnis nicht außerhalb der for-Anweisung vererbt wird.
Ausgabe
2
3
4
result : 1
Abhängig von der Version scheint es, dass es nicht hinzugefügt werden kann.
Ausgabe
2
2
2
result : 1
Es funktioniert gut, wenn Sie das hinzugefügte Ergebnis in einer Liste speichern. Fügen Sie den Mehrwert mit Anhängen zur Liste hinzu und löschen Sie den Wert vor dem Hinzufügen mit Pop.
count_test2.j2
{%- set cnt = [1] -%}
{%- for i in range(3) -%}
{%- set _ = cnt.append(cnt[0] + 1) -%}
{%- set _ = cnt.pop(0) -%}
{{ cnt[0] }}
{% endfor -%}
result : {{ cnt[0] }}
<2019/12/21: Von na90ya> Es scheint, dass Variablen erhalten bleiben, wenn Namespace-Objekte verwendet werden, die in 2.10 von jinja2 eingeführt wurden. (Referenzmaterial [1])
count_test3.j2
{%- set ns = namespace(cnt=1) -%}
{%- for i in range(3) -%}
{%- set ns.cnt = ns.cnt + 1 -%}
{{ ns.cnt }}
{% endfor -%}
result : {{ ns.cnt }}
Wenn Sie das Ergebnis betrachten, werden die Variablen immer noch außerhalb der for-Anweisung hinzugefügt.
Ausgabe
2
3
4
result : 4
[[1]Template Designer Documentation] (https://jinja.palletsprojects.com/en/2.10.x/templates/#assignments)
Recommended Posts