首页 > 后端开发 > Python教程 > 在 Jinja 模板中解析 JSON 时如何解决'SyntaxError: Unexpected token '&'”?

在 Jinja 模板中解析 JSON 时如何解决'SyntaxError: Unexpected token '&'”?

Mary-Kate Olsen
发布: 2024-12-20 10:13:16
原创
363 人浏览过

How to Resolve

在 Jinja 模板中渲染 JSON 数据时解决 JavaScript 语法错误

尝试通过 Jinja 模板中渲染的 JavaScript 代码迭代 JSON 数据时,您可能会遇到“SyntaxError” :调用 JSON.parse() 时出现意外标记“&””错误。这个错误是由于 Flask 的 Jinja 环境在 HTML 模板中渲染时自动转义数据而导致的。

解决方案:使用 tojson 过滤器

为了防止这种转义过程,并在 JavaScript 中将数据处理为 JSON ,Flask提供了tojson过滤器。它将 Python 对象转换为 JSON 并将它们标记为可以在模板中安全渲染。

return render_template("tree.html", tree=tree)
登录后复制
登录后复制
<script>
  var tree = {{ tree|tojson }};
</script>
登录后复制

处理非 JSON 数据

如果您不处理 JSON 数据或已经将其转换为字符串,您可以使用安全过滤器或将字符串包装在标记中以防止转义:

return render_template("tree.html", tree=json.dumps(tree))
登录后复制
<script>
  var tree = {{ tree|safe }};
  // or
  var tree = {{ Markup(json.dumps(tree)) }};
</script>
登录后复制

传递原始数据

如果您打算使用 Jinja 模板本身中的数据而不是将其传递给 JavaScript,则可以省略 tojson 过滤器并使用直接使用原始 Python 数据。

return render_template("tree.html", tree=tree)
登录后复制
登录后复制
{% for item in tree %}
  <li>{{ item }}</li>
{% endfor %}
登录后复制

通过实现这些技术,您可以有效地使用渲染的 JSON 数据JavaScript 不会遇到 SyntaxError 问题。

以上是在 Jinja 模板中解析 JSON 时如何解决'SyntaxError: Unexpected token '&'”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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