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

Wie vermeide ich JavaScript-Syntaxfehler bei der Verwendung von Jinja-Vorlagen und JSON-Daten?

Barbara Streisand
Freigeben: 2024-12-11 11:03:11
Original
180 Leute haben es durchsucht

How to Avoid JavaScript SyntaxErrors When Using Jinja Templates and JSON Data?

JavaScript löst SyntaxError bei Daten aus, die in der Jinja-Vorlage gerendert werden

Die Jinja-Umgebung von Flask maskiert automatisch Daten, die in HTML-Vorlagen gerendert werden, um Sicherheitsprobleme zu vermeiden. Bei der Übergabe von Python-Objekten, die als JSON behandelt werden sollen, ist es wichtig, diese Escape-Funktion korrekt zu handhaben, um Syntaxfehler in JavaScript zu vermeiden.

Verwendung des tojson-Filters

Um Python-Objekte als sicheres JSON darzustellen, verwenden Sie die tojson-Filter:

return render_template('tree.html', tree=tree)
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie in der Vorlage:

var tree = {{ tree|tojson }};
Nach dem Login kopieren

Dies sicher speichert die Daten in JSON und markiert sie als sicher, um ein Entkommen zu verhindern.

Umgang mit vorab gespeichertem JSON

Wenn das JSON bereits in eine Zeichenfolge gespeichert wurde, verwenden Sie den sicheren Filter, um es zu markieren als sicher zum Rendern:

return render_template('tree.html', tree=json.dumps(tree))
Nach dem Login kopieren

Verwenden Sie in der Vorlage:

var tree = {{ tree|safe }};
Nach dem Login kopieren

Using Markup

Alternativ können Sie die Zeichenfolge vor dem Rendern in Markup einschließen:

return render_template('tree.html', tree=Markup(json.dumps(tree)))
Nach dem Login kopieren

In der Vorlage können Sie den Wert wie folgt verwenden:

var tree = {{ tree }};
Nach dem Login kopieren

JSON vermeiden für Jinja-Verwendung

Wenn Sie die Daten in Jinja verwenden, anstatt sie an JavaScript zu übergeben, verwenden Sie tojson nicht. Übergeben Sie stattdessen die Python-Daten direkt und verwenden Sie sie normal in der Vorlage:

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 vermeide ich JavaScript-Syntaxfehler bei der Verwendung von Jinja-Vorlagen und JSON-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage