ホームページ > バックエンド開発 > Python チュートリアル > Jinja テンプレートと JSON データを使用するときに JavaScript の構文エラーを回避するにはどうすればよいですか?

Jinja テンプレートと JSON データを使用するときに JavaScript の構文エラーを回避するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-11 11:03:11
オリジナル
180 人が閲覧しました

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

JavaScript は、Jinja テンプレートでレンダリングされたデータで SyntaxError を発生させます

Flask の Jinja 環境は、セキュリティの問題を防ぐために、HTML テンプレートでレンダリングされたデータを自動的にエスケープします。 JSON として扱われる Python オブジェクトを渡す場合、JavaScript での構文エラーを避けるために、このエスケープを正しく処理することが重要です。

tojson フィルターの使用

Python オブジェクトを安全な JSON としてレンダリングするには、 tojson フィルター:

return render_template('tree.html', tree=tree)
ログイン後にコピー
ログイン後にコピー

テンプレートでは、 use:

var tree = {{ tree|tojson }};
ログイン後にコピー

これにより、データが JSON に安全にダンプされ、エスケープを防ぐために安全であるとマークされます。

事前ダンプされた JSON の処理

JSON が既に文字列にダンプされた場合は、安全なフィルターを使用してレンダリングしても安全であるとマーク付けします:

return render_template('tree.html', tree=json.dumps(tree))
ログイン後にコピー

Inテンプレートを使用するには:

var tree = {{ tree|safe }};
ログイン後にコピー

マークアップの使用

または、レンダリング前に文字列をマークアップでラップすることもできます:

return render_template('tree.html', tree=Markup(json.dumps(tree)))
ログイン後にコピー

テンプレートでは、次のように使用できます。値は次のとおりです:

var tree = {{ tree }};
ログイン後にコピー

Jinja の JSON の回避

を使用します。データを JavaScript に渡す代わりに Jinja で使用している場合は、tojson を使用しないでください。代わりに、Python データを直接渡して、通常のようにテンプレートで使用します:

return render_template('tree.html', tree=tree)
ログイン後にコピー
ログイン後にコピー
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
ログイン後にコピー

以上がJinja テンプレートと JSON データを使用するときに JavaScript の構文エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート