Problem:
Versuch, in einer Jinja-Vorlage gerenderte JSON-Daten zu verwenden Die Vorlage in JavaScript schlägt mit der Meldung „SyntaxError: Unexpected token '&'“ fehl. Fehler. Wie können diese gerenderten JSON-Daten effektiv in JavaScript verwendet werden?
Lösung:
Die Jinja-Umgebung von Flask entgeht aus Sicherheitsgründen inhärent den in HTML-Vorlagen gerenderten Daten. Bei der Übergabe von Python-Objekten zur Interpretation als JSON sollte der Tojson-Filter verwendet werden, um die Daten entsprechend zu konvertieren und als sicher zu markieren:
return render_template('tree.html', tree=tree)
var tree = {{ tree|tojson }};
Wenn JSON nicht gerendert wird oder zuvor konvertiert wurde Eine Zeichenfolge, der sichere Filter oder der Markup-Wrapper können verwendet werden, um die Sicherheit zu gewährleisten Rendering:
# already dumped to json return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
# already dumped and marked safe return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};
Alternativ ist JSON nicht erforderlich, wenn die Daten ausschließlich innerhalb von Jinja verwendet und nicht an JavaScript übergeben werden. Die ursprünglichen Python-Daten können direkt in der Vorlage übergeben und verwendet werden:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Das obige ist der detaillierte Inhalt vonWie verwende ich aus einer Jinja-Vorlage gerenderte JSON-Daten sicher in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!