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.
Um Python-Objekte als sicheres JSON darzustellen, verwenden Sie die tojson-Filter:
return render_template('tree.html', tree=tree)
Verwenden Sie in der Vorlage:
var tree = {{ tree|tojson }};
Dies sicher speichert die Daten in JSON und markiert sie als sicher, um ein Entkommen zu verhindern.
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))
Verwenden Sie in der Vorlage:
var tree = {{ tree|safe }};
Alternativ können Sie die Zeichenfolge vor dem Rendern in Markup einschließen:
return render_template('tree.html', tree=Markup(json.dumps(tree)))
In der Vorlage können Sie den Wert wie folgt verwenden:
var tree = {{ tree }};
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)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
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!