JavaScript如何将#&34;转回双引号?Flask渲染HTML转义问题求解
问题根因
- 你的JSON处理逻辑存在错误:你定义的
jsonData是普通字符串,对字符串执行json.dumps()会给整个字符串外层额外加一层引号和转义规则,后续的json.loads()执行后得到的还是原始的普通字符串,并没有被解析为可直接使用的Python字典/列表对象。 - Flask默认使用的Jinja2模板开启了HTML自动转义机制,所有传入模板的字符串内容中的特殊字符(双引号、尖括号等)都会被转义为HTML实体编码,也就是你看到的
"。
修复方法
1. 修正后端JSON生成逻辑
不要手动拼接JSON字符串,直接通过Python原生对象转合法JSON字符串:
import json # 先定义符合你需求的Python列表/字典对象 raw_data = [{"id": "idStr", "name": "nameStr"}] # 转换为合法JSON字符串后传入模板 prs = json.dumps(raw_data)
2. 模板中关闭对应变量的自动转义
在你渲染甘特图数据的Jinja2位置,使用safe过滤器关闭HTML转义即可保留原始双引号:
data = {{ prs|safe }}
注意:仅在你确认输出的内容为安全的自有数据、不存在恶意注入风险时使用safe过滤器,避免产生XSS安全漏洞。
内容的提问来源于stack exchange,提问作者lugz
相关产品推荐
相关产品推荐

