首頁 >後端開發 >Python教學 >如何在 JavaScript 中安全地使用從 Jinja 模板渲染的 JSON 資料?

如何在 JavaScript 中安全地使用從 Jinja 模板渲染的 JSON 資料?

DDD
DDD原創
2025-01-05 16:46:39551瀏覽

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

JavaScript 對Jinja 模板中渲染的資料引發語法錯誤

問題:

嘗試利用Jinja資料JavaScript 中的範本失敗並顯示「SyntaxError: Unexpected token '&'」。錯誤。如何在 JavaScript 中有效地使用渲染的 JSON 資料?

解決方案:

出於安全目的,Flask 的 Jinja 環境本質上會對 HTML 模板中渲染的資料進行轉義。當傳遞要解釋為 JSON 的 Python 物件時,應使用 tojson 過濾器來適當地轉換資料並將資料標記為安全性:

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

如果 JSON未渲​​染或之前已轉換為字串,可以使用安全過濾器或標記包裝器來確保安全渲染:

# 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 %}

以上是如何在 JavaScript 中安全地使用從 Jinja 模板渲染的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn