当将 JSON 数据从 Flask 路由传递到 Jinja 模板时,浏览器可能会抛出语法错误:意外的标记“&”。渲染数据时需要属性名称。了解如何在 JavaScript 中处理渲染的 JSON 数据对于成功处理模板至关重要。
Flask 的 Jinja 环境会自动转义 HTML 模板中渲染的数据以防止安全漏洞。对于需要被视为 JSON 的数据,Flask 提供了 tojson 过滤器,它将数据转储为 JSON 并将其标记为安全。使用 tojson 过滤器可确保数据在不转义的情况下呈现,从而使其能够在 JavaScript 中正确解析。
tree = get_nodes("Root") return render_template("folder.html", data=tree|tojson)
var tree = {{ tree|tojson }};
或者,在较旧的 Flask 版本中,安全过滤器可用于标记数据安全:
var tree = {{ tree|tojson|safe }};
如果数据已经转储为 JSON,安全过滤器可用于将其标记为安全渲染而无需转义:
return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
将 JSON 字符串包装在 Markup 中也相当于使用安全过滤器:
return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};
如果数据没有被传递到JavaScript 但在 Jinja 中使用,可以省略 JSON 渲染,直接使用 Python 数据:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}<li> {% endfor %}
以上是从 Jinja 模板渲染 JSON 数据时,为什么我的 JavaScript 会出现语法错误?的详细内容。更多信息请关注PHP中文网其他相关文章!