Maison >développement back-end >Tutoriel Python >Comment éviter les erreurs de syntaxe JavaScript lors de l'utilisation de modèles Jinja et de données JSON ?

Comment éviter les erreurs de syntaxe JavaScript lors de l'utilisation de modèles Jinja et de données JSON ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 11:03:11149parcourir

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

JavaScript génère SyntaxError avec les données rendues dans le modèle Jinja

L'environnement Jinja de Flask échappe automatiquement aux données rendues dans les modèles HTML pour éviter les problèmes de sécurité. Lors du passage d'objets Python à traiter comme JSON, il est essentiel de gérer cet échappement correctement pour éviter les erreurs de syntaxe dans JavaScript.

Utilisation du filtre tojson

Pour rendre les objets Python en JSON sécurisé, utilisez le filtre tojson :

return render_template('tree.html', tree=tree)

Dans le modèle, utilisez :

var tree = {{ tree|tojson }};

Ceci en toute sécurité transfère les données dans JSON et les marque comme sûres pour éviter toute fuite.

Traitement du JSON pré-vidé

Si le JSON a déjà été vidé dans une chaîne, utilisez le filtre sécurisé pour le marquer aussi sûr pour le rendu :

return render_template('tree.html', tree=json.dumps(tree))

Dans le modèle, utilisez :

var tree = {{ tree|safe }};

Utilisation Balisage

Vous pouvez également envelopper la chaîne dans Markup avant le rendu :

return render_template('tree.html', tree=Markup(json.dumps(tree)))

Dans le modèle, vous pouvez utiliser la valeur comme :

var tree = {{ tree }};

Éviter JSON pour Jinja Use

Si vous utilisez les données dans Jinja au lieu de les transmettre à JavaScript, n'utilisez pas tojson. Au lieu de cela, transmettez directement les données Python et utilisez-les normalement dans le modèle :

return render_template('tree.html', tree=tree)
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn