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

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

Barbara Streisand
发布: 2024-12-11 11:03:11
原创
156 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板