Heim > Backend-Entwicklung > Python-Tutorial > Wie verwende ich aus einer Jinja-Vorlage gerenderte JSON-Daten sicher in JavaScript?

Wie verwende ich aus einer Jinja-Vorlage gerenderte JSON-Daten sicher in JavaScript?

DDD
Freigeben: 2025-01-05 16:46:39
Original
566 Leute haben es durchsucht

How to Safely Use JSON Data Rendered from a Jinja Template in JavaScript?

JavaScript löst einen Syntaxfehler bei in einer Jinja-Vorlage gerenderten Daten aus

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)
Nach dem Login kopieren
Nach dem Login kopieren
var tree = {{ tree|tojson }};
Nach dem Login kopieren

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))
Nach dem Login kopieren
var tree = {{ tree|safe }};
Nach dem Login kopieren
# already dumped and marked safe
return render_template('tree.html', tree=Markup(json.dumps(tree)))
Nach dem Login kopieren
var tree = {{ tree }};
Nach dem Login kopieren

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)
Nach dem Login kopieren
Nach dem Login kopieren
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage