Jinja テンプレートでレンダリングされた JSON データを JavaScript で使用する方法
Flask では、ルートから Jinja テンプレートにデータを渡すときに、自動的にセキュリティの脆弱性を防ぐためにエスケープが有効になっています。ただし、JavaScript でデータを JSON として使用しようとすると、問題が発生する可能性があります。
SyntaxError: Unexpected Token '&'
レンダリングされたデータを使用しようとすると、 JSON.parse で、Jinja が JSON.parse の「&」文字をエスケープするため、エラー「SyntaxError: Unexpected token '&'」が発生します。
tojson フィルターの使用
これを解決するために、Flask はデータを JSON として安全にダンプし、レンダリングしても安全であるとマークする tojson フィルターを提供します。
return render_template('tree.html', tree=tree)
<script>var tree = {{ tree|tojson }};</script>
前の Flask の動作と安全性フィルター
Flask の古いバージョンでは、ダンプされたデータが安全であるとマークされなかったため、次のアプローチが使用されました:
<script>var tree = {{ tree|tojson|safe }};</script>
ただし、これは必要なくなりました。
JSON を使用しない代替アプローチ
合格しない場合データを JavaScript に渡しますが、Jinja でそれを使用すると、tojson を呼び出さずに元の Python データを渡すことができます:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Other Options
以上がFlask の Jinja テンプレートの JSON データを JavaScript で安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。