ホームページ >バックエンド開発 >Python チュートリアル >Jinja テンプレートからレンダリングされた JSON データを JavaScript で安全に使用するにはどうすればよいですか?

Jinja テンプレートからレンダリングされた JSON データを JavaScript で安全に使用するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-05 16:46:39551ブラウズ

How to Safely Use JSON Data Rendered from a Jinja Template in JavaScript?

Jinja テンプレートでレンダリングされたデータで JavaScript が SyntaxError を発生させる

問題:

Jinja でレンダリングされた JSON データを利用しようとしましたJavaScript 内のテンプレートが「SyntaxError: Unexpected token」で失敗する「&」。エラー。このレンダリングされた JSON データを JavaScript で効果的に使用するにはどうすればよいですか?

解決策:

Flask の Jinja 環境は、セキュリティ上の目的で HTML テンプレートでレンダリングされたデータを本質的にエスケープします。 JSON として解釈される Python オブジェクトを渡すときは、tojson フィルターを使用してデータを適切に変換し、安全であるとマークする必要があります。

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

JSON がレンダリングされていないか、以前に変換されている場合文字列、安全なフィルター、またはマークアップ ラッパーを利用して安全性を確保できます。 rendering:

# already dumped to json
return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
# already dumped and marked safe
return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};

あるいは、データが Jinja 内でのみ使用され、JavaScript に渡されない場合、JSON は必要ありません。元の Python データをテンプレートに直接渡して使用できます:

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

以上がJinja テンプレートからレンダリングされた JSON データを JavaScript で安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。