So verwenden Sie in Jinja-Vorlagen gerenderte JSON-Daten mit JavaScript
In Flask, wenn Daten von einer Route an eine Jinja-Vorlage übergeben werden, automatisch Escape ist aktiviert, um Sicherheitslücken zu vermeiden. Dies kann jedoch zu Problemen führen, wenn versucht wird, die Daten als JSON in JavaScript zu verwenden.
SyntaxError: Unexpected Token '&'
Beim Versuch, die gerenderten Daten mit zu verwenden JSON.parse, der Fehler „SyntaxError: Unexpected token '&'“ tritt auf, weil Jinja das Zeichen „&“ in der Datei maskiert Ausgabe.
Verwenden des tojson-Filters
Um dieses Problem zu beheben, stellt Flask den tojson-Filter bereit, der die Daten sicher als JSON ablegt und sie als sicher zum Rendern markiert:
return render_template('tree.html', tree=tree)
<script>var tree = {{ tree|tojson }};</script>
Vorheriges Flaschenverhalten und sicher Filter
Ältere Versionen von Flask haben die ausgegebenen Daten nicht als sicher markiert, daher wurde der folgende Ansatz verwendet:
<script>var tree = {{ tree|tojson|safe }};</script>
Dies ist jedoch nicht mehr erforderlich.
Alternativer Ansatz ohne JSON
Wenn Sie die Daten nicht an JavaScript übergeben, sondern verwenden Wenn Sie es in Jinja verwenden, können Sie die ursprünglichen Python-Daten übergeben, ohne tojson aufzurufen:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Andere Optionen
Das obige ist der detaillierte Inhalt vonWie verwende ich JSON-Daten aus den Jinja-Vorlagen von Flask sicher in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!