Comment utiliser les données JSON rendues dans les modèles Jinja avec JavaScript
Dans Flask, lors du transfert de données d'un itinéraire vers un modèle Jinja, automatique l'échappement est activé pour éviter les failles de sécurité. Cependant, cela peut entraîner des problèmes lors de la tentative d'utilisation des données au format JSON dans JavaScript.
SyntaxError : Unexpected Token '&'
Lorsque vous essayez d'utiliser les données rendues avec JSON.parse, l'erreur "SyntaxError: Unexpected token '&'" se produit car Jinja échappe au caractère "&" dans le sortie.
Utilisation du filtre tojson
Pour résoudre ce problème, Flask fournit le filtre tojson qui vide en toute sécurité les données au format JSON et les marque comme sûres pour le rendu :
return render_template('tree.html', tree=tree)
<script>var tree = {{ tree|tojson }};</script>
Comportement du flacon précédent et sécurité Filtre
Les anciennes versions de Flask ne marquaient pas les données sauvegardées comme sûres, l'approche suivante a donc été utilisée :
<script>var tree = {{ tree|tojson|safe }};</script>
Cependant, cela n'est plus nécessaire.
Approche alternative sans JSON
Si vous ne transmettez pas les données à JavaScript mais que vous les utilisez dans Jinja, vous pouvez transmettre les données Python d'origine sans appeler tojson :
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Autres options
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!