Heim >Backend-Entwicklung >Python-Tutorial >Wie vermeide ich JavaScript-Syntaxfehler bei der Verwendung von Jinja-gerenderten JSON-Daten aus Flask?

Wie vermeide ich JavaScript-Syntaxfehler bei der Verwendung von Jinja-gerenderten JSON-Daten aus Flask?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 12:19:10302Durchsuche

How to Avoid JavaScript SyntaxErrors When Using Jinja-Rendered JSON Data from Flask?

JavaScript SyntaxError with Jinja-Rendered Data

Problem:

Beim Übergeben von JSON-Daten von Flask an eine Jinja-Vorlage rendert JavaScript, JSON.parse() schlägt mit a fehl SyntaxError.

Grundlegende Ursache:

Flask maskiert in HTML-Vorlagen gerenderte Daten, um Sicherheitslücken zu vermeiden, die sich auf JSON-Daten in JavaScript auswirken.

Lösung:

Verwenden Sie den Tojson Filter:

Der Tojson-Filter von Flask konvertiert Python-Objekte in sicheres JSON und markiert die Daten als sicher für das Rendern:

return render_template("tree.html", tree=tree)
var tree = {{ tree|tojson }};

Alternative Optionen:

  • sicherer Filter oder Markup-Wrapping: Wenn die Daten bereits JSON, verwenden Sie den sicheren Filter oder packen Sie ihn in Markup ein.
return render_template("tree.html", tree=Markup(json.dumps(tree)))
var tree = {{ tree }};
  • Direkte Python-Daten: Wenn die Daten nicht für JavaScript gedacht sind, Verwenden Sie die Python-Daten direkt in der Vorlage ohne JSON-Konvertierung.
return render_template("tree.html", tree=tree)
{% for item in tree %}
    <li>{{ item }}<br /></li>
{% endfor %}

Das obige ist der detaillierte Inhalt vonWie vermeide ich JavaScript-Syntaxfehler bei der Verwendung von Jinja-gerenderten JSON-Daten aus Flask?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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