如何防止web2py自动编码html实体?

如何防止web2py自动编码html实体?,html,markdown,web2py,html-entities,Html,Markdown,Web2py,Html Entities,我正试图打印为用户提交者生成的HTMLmarkdown,由 {{=markdown(post.message)}} 其中,通过导入降价功能 from gluon.contrib.markdown.markdown2 import markdown We2Py似乎自动对HTML实体进行编码,因此每个

我正试图打印为用户提交者生成的HTML
markdown
,由

{{=markdown(post.message)}}
其中,通过导入降价功能

from gluon.contrib.markdown.markdown2 import markdown
We2Py似乎自动对HTML实体进行编码,因此每个
都转换为
。如何防止这种情况发生

在执行此操作时,是否需要记住任何安全问题?另外,有谁能告诉我,在数据库中存储
HTML
时,如何去除
标记,同时保留
标记?

您必须这样做:

{{=XML(markdown(post.message))}}
模板呈现会对每个字符串进行清理,如果您传递
,它将被呈现为
“div”
,以防止恶意代码

当您将字符串传递给
XML
helper
XML(“”
时,它使用
XML
解析器将字符串呈现到
XML
树结构中,
XML
有一个方法
.XML()
,该方法将未经转换的字符串返回给
响应。正文
,以便用户的浏览器具有正确的html

您可以控制
XML
呈现的一些参数

:param text: the XML text
:param sanitize: sanitize text using the permitted tags and allowed attributes (default False)
:param permitted_tags: list of permitted tags (default: simple list of tags)
:param allowed_attributes: dictionary of allowed attributed

如果用户提交了一个带有脚本的类似XML树结构,该怎么办?我的意思是web2py如何区分其
XML
输出和用户提交的输出?用户只能提交文本,默认情况下所有文本都转义。避免这种情况的唯一方法是将文本传递给web2py
XML()
helper类,该类知道如何在不转义的情况下呈现自身。用户无法提交
XML
helper类的实例。注意,在这种情况下,当我们说
XML
helper时,我们指的是一个名为“XML”的Python类,它是web2py的一部分,不是一个碰巧是有效XML的通用字符串(如果用户提交这样的字符串,它仍然会被转义)。是否有办法全局设置
allowed_标记
allowed_属性
,这样我就不需要到处添加它们了?现在,我正在使用一个函数(
defmy_xml(st):返回xml(st,sanitize=True,…)
)导入到我的模型中供全局使用