You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask视图中json.dumps返回内容渲染模板出现无效JSON问题

问题成因
  • 该问题是Jinja2模板引擎的默认HTML自动转义机制导致的:默认配置下,所有通过{{ }}语法输出到模板的内容,都会被自动转义HTML特殊字符,避免XSS攻击。双引号"对应的HTML实体编码就是",因此你用json.dumps生成的JSON字符串里的所有双引号都被转义,最终渲染出来的就是无法被JS识别的无效代码。
解决方案

你可以任选以下任意一种方法修复:

  • 方法一:模板输出时添加safe过滤器,明确告知Jinja2该内容不需要转义,直接输出即可:
    修改模板代码为:
    <script>
        console.log({{ data|safe }});
    </script>
    
  • 方法二(更推荐):无需手动在后端做JSON序列化,直接传递原始Python对象到模板,使用Jinja2内置的tojson过滤器自动处理序列化和转义逻辑:
    后端代码修改为:
    products_list: list = [{"product_name": "product #1"}, {"product_name": "product #2"}]
    return render_template('index.html', data=products_list)
    
    模板代码修改为:
    <script>
        console.log({{ data|tojson }});
    </script>
    
    该方案不需要你手动处理序列化逻辑,安全性更高,也不会出现转义冲突问题。

内容的提问来源于stack exchange,提问作者wesose1216

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:15:00