关于flask html转义的问题

jaymie
  • 78

数据库中的数据

<p>我们是一家针对K12教育领域的互联网在线教育创业公司,立志通过互联网手段,让教育更扁平化、公平化,我们渴望成为互联网教育领域的独角兽公司。</p>
<p></p>
<p></p>
<p>我们是一家具有鬣狗文化的创业型公司,公司每个员工渴望成功,像鬣狗一样去竞争;我们是一家团队至上的创业型公司,公司每个员工把团队利益摆在个人利益之前;我们是一家追求完美的公司,公司每个员工以精益求精的精神追求最佳的产品交付;我们是一家具有人文关怀的创业型公司,每月提供一天带薪年假,希望你在努力工作的同时,有更多的时间和家人团聚;同时我们是一家氛围轻松的公司,每天为员工提供下午茶,希望员工有更多的交流,同时我们像你的家人一样关心你的健康,每天提供Swiss维生素和鱼肝油,希望能够关爱到你的健康。</p>
<p></p>
<p></p>
<p>我们的管理团队涵盖70后、80后,既有70后的踏实与严谨,又有80后的创新和冲劲,是一家既有激情又有执行力的互联网企业,同时,公司员工中的90后占了大部分比例,希望他们可以带来90后的活力。</p>
<p></p>
<p></p>
<p>我们欢迎既有想法、又有执行力,既能立足长远、又能脚踏实地的你加入我们。</p>

flask中页面显示,这个是加了 safe过滤的

clipboard.png

下图是不加safe过滤的样子

clipboard.png

求解,我想要让他以p标签的形式显示在html的文档流中的

回复
阅读 2.8k
3 个回答

用正则匹配替换一下就行了,比如在 js 中你可以这么做:

<script>
    let dom = document.createElement("div");
    let str = `&lt;p&gt;我们是一家针对K12教育领域的互联网在线教育创业公司,立志通过互联网手段,让教育更扁平化、公平化,我们渴望成为互联网教育领域的独角兽公司。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;我们是一家具有鬣狗文化的创业型公司,公司每个员工渴望成功,像鬣狗一样去竞争;我们是一家团队至上的创业型公司,公司每个员工把团队利益摆在个人利益之前;我们是一家追求完美的公司,公司每个员工以精益求精的精神追求最佳的产品交付;我们是一家具有人文关怀的创业型公司,每月提供一天带薪年假,希望你在努力工作的同时,有更多的时间和家人团聚;同时我们是一家氛围轻松的公司,每天为员工提供下午茶,希望员工有更多的交流,同时我们像你的家人一样关心你的健康,每天提供Swiss维生素和鱼肝油,希望能够关爱到你的健康。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;我们的管理团队涵盖70后、80后,既有70后的踏实与严谨,又有80后的创新和冲劲,是一家既有激情又有执行力的互联网企业,同时,公司员工中的90后占了大部分比例,希望他们可以带来90后的活力。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;我们欢迎既有想法、又有执行力,既能立足长远、又能脚踏实地的你加入我们。&lt;/p&gt;`;
    dom.innerHTML = str.replace(/&lt;/g, "<").replace(/&gt;/g, ">");

    document.body.appendChild(dom);
</script>

然后页面就变成想要的样子了:

clipboard.png

python 用正则替换一下,原理一样的。

飘雪的浮云
  • 54
content = 数据库命令返回文章字符串
new_content = content.replace('/&lt;/g', '<').replace('/&gt;/g', '>')

.replace() 就是替换字符串的命令。

也可以这样写:

#获取字符串
content = 数据库命令返回文章字符串
#替换左箭头
content_a = content.replace('/&lt;/g', '<')
#替换右箭头
new_coutent =content_a.replace('/&gt;/g', '>')
chaseyann
  • 2
新手上路,请多包涵

提供三种方法

  1. 写入数据库的数据,不要escape,前端加safe过滤
  2. 写入数据库的数据,进行escape,在输出到前端时用Python端用html.unescape(your_data)反转义回去,然后safe过滤
  3. 写入数据库的数据,进行escape,直接在模板上使用{{ Markup(your_data).unescape() | safe }}

提醒一下,以上都是safe模式,即浏览器端相信服务器端的数据是安全的,请在用safe模式之前把敏感的标签转义掉

宣传栏