使用安全文本 — MarkupSafe 文档
来自菜鸟教程
使用安全文本
- markupsafe.escape()
用 HTML 安全序列替换字符串中的字符
&
、<
、>
、'
和"
。 如果您需要在 HTML 中显示可能包含此类字符的文本,请使用此选项。如果对象具有
__html__
方法,则调用该方法并假定返回值对于 HTML 已经是安全的。- 参数
s – 要转换为字符串并转义的对象。
- 退货
带有转义文本的 Markup 字符串。
- class markupsafe.Markup(base=, encoding=None, errors='strict')
准备好安全插入 HTML 或 XML 文档的字符串,因为它已被转义或因为它被标记为安全。
将对象传递给构造函数会将其转换为文本并将其包装以将其标记为安全而不转义。 要转义文本,请改用 escape() 类方法。
>>> Markup("Hello, <em>World</em>!") Markup('Hello, <em>World</em>!') >>> Markup(42) Markup('42') >>> Markup.escape("Hello, <em>World</em>!") Markup('Hello <em>World</em>!')
这实现了一些框架使用的
__html__()
接口。 传递实现__html__()
的对象将包装该方法的输出,将其标记为安全。>>> class Foo: ... def __html__(self): ... return '<a href="/foo">foo</a>' ... >>> Markup(Foo()) Markup('<a href="/foo">foo</a>')
这是
str
的子类。 它具有相同的方法,但转义它们的参数并返回一个Markup
实例。>>> Markup("<em>%s</em>") % ("foo & bar",) Markup('<em>foo & bar</em>') >>> Markup("<em>Hello</em> ") + "<foo>" Markup('<em>Hello</em> <foo>')
- 参数
base (Any) –
编码 (可选[str]) –
错误 (str) –
- 返回类型
- striptags()
unescape() 标记,删除标签,并将空格规范化为单个空格。
>>> Markup("Main » <em>About</em>").striptags() 'Main » About'
- 返回类型
字符串
- unescape()
将转义标记转换回文本字符串。 这将用它们代表的字符替换 HTML 实体。
>>> Markup("Main » <em>About</em>").unescape() 'Main » <em>About</em>'
- 返回类型
字符串
可选值
- markupsafe.escape_silent()
类似于 escape() 但将
None
视为空字符串。 对可选值很有用,否则当值为None
时,您会得到字符串'None'
。>>> escape(None) Markup('None') >>> escape_silent(None) Markup('')
将对象转换为字符串
- markupsafe.soft_str()
如果尚未将对象转换为字符串。 这会保留一个 Markup 字符串,而不是将其转换回基本字符串,因此它仍将被标记为安全并且不会再次转义。
>>> value = escape("<User 1>") >>> value Markup('<User 1>') >>> escape(str(value)) Markup('&lt;User 1&gt;') >>> escape(soft_str(value)) Markup('<User 1>')