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

Sat*_*vik 2 html markdown web2py html-entities

我想打印出HTML的用户提交产生的markdown,由

{{=markdown(post.message)}}
Run Code Online (Sandbox Code Playgroud)

通过输入降价功能的地方

from gluon.contrib.markdown.markdown2 import markdown
Run Code Online (Sandbox Code Playgroud)

We2Py似乎自动编码HTML-Entities,因此每个都<被转换成&lt;每个>转换成&gt;.我该如何防止这种情况发生?

在这样做时我是否需要记住任何安全问题?此外,任何人都可以告诉我如何HTML在将数据存储到数据库时将其剥离,同时保留markdown

Bru*_*uno 9

你必须这样做:

{{=XML(markdown(post.message))}}
Run Code Online (Sandbox Code Playgroud)

每个字符串都通过模板渲染进行清理,如果你传递 "<div>"它将被渲染,因为"&lt;div&gt;"它是为了防止恶意代码.

当您将字符串传递给XML帮助程序时,XML("<div>")它使用XML解析器将字符串呈现为XML树结构,XML有一个方法.xml()将非转义字符串返回给response.body用户的浏览器具有正确的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
Run Code Online (Sandbox Code Playgroud)