首页 >后端开发 >Python教程 >使用 Jinja 模板和 JSON 数据时如何避免 JavaScript 语法错误?

使用 Jinja 模板和 JSON 数据时如何避免 JavaScript 语法错误?

Barbara Streisand
Barbara Streisand原创
2024-12-11 11:03:11151浏览

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

JavaScript 对 Jinja 模板中呈现的数据引发 SyntaxError

Flask 的 Jinja 环境自动转义 HTML 模板中呈现的数据以防止安全问题。将 Python 对象传递为 JSON 时,必须正确处理这种转义以避免 JavaScript 中的语法错误。

使用 tojson 过滤器

要将 Python 对象渲染为安全 JSON,请使用tojson 过滤器:

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

在模板中,使用:

var tree = {{ tree|tojson }};

这个安全地将数据转储为 JSON 并将其标记为安全以防止转义。

处理预转储的 JSON

如果 JSON 已转储为字符串,请使用安全过滤器来标记它对于渲染来说是安全的:

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

在模板中,使用:

var tree = {{ tree|safe }};

使用标记

或者,您可以在渲染之前将字符串包装在标记中:

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

在模板中,您可以将值用作:

var tree = {{ tree }};

避免 Jinja 使用 JSON使用

如果您在 Jinja 中使用数据而不是将其传递给 JavaScript,请不要使用 tojson。相反,直接传递Python数据并在模板中正常使用:

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

以上是使用 Jinja 模板和 JSON 数据时如何避免 JavaScript 语法错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn