Ich habe eine globale Funktion test
Jinja2 Frame-Variablen in der globalen Funktion
from jinja2.utils import contextfunction
@contextfunction
def test(context):
context.get_all()
Und in meinem Test ich es so nennen ...
{% set i = 0 %}
{% for j in range(0, 10) %}
{% set k = 0 %}
{{ test() }}
{% endfor %}
Die einzige Variable, die am Ende in die context
in test
ist i
. j
und k
sind "unlesbar". Gibt es einen Weg, um sie anderen den Zugriff auf als sie in test(j, k)
werden Sie mit Rahmen in der Vorlage zu importieren? (zB: {% von 'admin/lib.html' import render_form, render_field, render_form_fields mit Kontext%}) – rll
Aus diesem Beispiel gibt es keinen Import. 'render' wird auf der kompilierten Vorlage aufgerufen und' test() 'wird zu' env ['globals'] ' – Shaun
hinzugefügt. Sie müssen j, k an die Funktion übergeben. Diese Variablen sind lokal für den for-Block und nicht für den globalen Kontext verfügbar. j ist selbsterklärend; k ist lokal, weil ['{% set%}' nicht dem globalen Kontext zugewiesen wird (https://github.com/pallets/jinja/issues/164). – approxiblue