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

Tornado模板中如何防止单引号被转为'?

解决Tornado模板渲染时单引号被转义为HTML实体的问题

问题根源在于你在模板中使用了escape()函数,Tornado的该函数会自动将单引号等特殊字符转换为HTML实体(如'转为'),这是默认的安全转义机制。以下是两种可行的解决方法:

方法一:修改模板,禁用变量转义

将模板中的escape()调用替换为raw过滤器,明确告诉Tornado不需要对该变量进行HTML转义:

<option value="" SELECTED></option>
{% for item1 in items %}
   <optgroup label="{{ item1[0] | raw }}">
    {% for item2 in item1[1] %}
       <option value="{{ item2 | raw }}">{{ item2 | raw }}</option>
 {% end %}
 {% end %}

方法二:在Python代码中标记内容为安全

从tornado.escape导入Markup类,将需要原样输出的字符串包装为Markup对象,这样模板渲染时会自动跳过转义处理:

from tornado.escape import Markup

# 对包含单引号的字符串进行包装
tmp_s = Markup(tmp_s)
tmp_n = Markup(tmp_n)
tmp_a = Markup(tmp_a)

tmp_S_array.append(tmp_s)
tmp_S_array.append(tmp_n)
tmp_S_array.append(tmp_a)

注意:只有当你确认内容来源可信(如内部数据库,无用户输入的恶意代码)时,才建议禁用转义,避免引发XSS安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:36:35