
126
|
第
11
章
allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code',
'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul',
'h1', 'h2', 'h3', 'p']
target.body_html = bleach.linkify(bleach.clean(
markdown(value, output_format='html'),
tags=allowed_tags, strip=True))
db.event.listen(Post.body, 'set', Post.on_changed_body)
on_changed_body() 函数注册在 body 字段上,是
SQLAlchemy
“
set
”事件的监听程序,这
意味着只要 body 字段设了新值,这个函数就会自动被调用。on_changed_body() 函数把
body 字段中的文本渲染成
HTML
格式,将结果保存在 body_html 中,自动且高效地完成
Markdown
文本到
HTML
的转换。
真正的转换过程分
3
步完成。首先,markdown() 函数初步把
Markdown
文本转换成
HTML
。
然后,把得到的结果和允许使用的
HTML
标签列表传给 clean() 函数。clean() 函数删除
所有不在白名单中的标签。转换的最后一步由 linkify() 函数完成,这个函数由
Bleach ...