在 flask 项目中应用Markdown渲染引擎 mistune

标签: flask ; markdown ; python ;


在 flask 中得到直接支持的 Markdown 渲染库都不太理想,我分别尝试过 Flask-Markdown 和 Flask-Misaka.

抛开性能不谈,这俩支持的语法就很弱鸡。不支持表格,不支持三个反引号定义代码块,整段代码必须缩进4个空格等等。

经过比较,发现 mistune 比较优秀。不过这个库并不能在 flask 中直接使用。当然,自己动手也很简单。

首先通过 pip 安装它:

pip install mistune

在 flask 中引入,并注册。

import mistune
from markupsafe import Markup
md = mistune.create_markdown(escape=True, plugins=[
    'strikethrough', 
    'table',
    'url',
    'task_lists',
    'mark',
    'insert',
    'superscript',
    'subscript'])

app.jinja_env.filters.setdefault('markdown', lambda txt: Markup(md(txt)))

上面声明的 md 实例打开了一些扩展语法的支持。

最后一行将该实例注册成为 app 的 markdown filter.

然后,就可以在模板中引用了:

{{ content|markdown }}