【发布时间】:2012-07-03 19:47:01
【问题描述】:
想法如下。我使用类似于 stackoverflow 的标签向 jinja2 发送一些文本。我如何告诉 jinja2 将它们视为包含文本的标记并在 html 中生成粗体、斜体等文本?
谢谢。
【问题讨论】:
标签: python html flask jinja2 restructuredtext
想法如下。我使用类似于 stackoverflow 的标签向 jinja2 发送一些文本。我如何告诉 jinja2 将它们视为包含文本的标记并在 html 中生成粗体、斜体等文本?
谢谢。
【问题讨论】:
标签: python html flask jinja2 restructuredtext
我已经习惯了django-markdown,所以我认为使用过滤器是实现此目的的好方法:
<div class="content">{{ article.body|rst }}</div>
我不知道 jinja2 是否存在这样的过滤器,但 it should be very easy to write。我猜这行中的某些内容(未经测试的代码):
from docutils.core import publish_parts
import jinja2
def rst_filter(s):
return jinja2.Markup(publish_parts(source=s, writer_name='html')['body'])
environment.filters['rst'] = rst_filter
【讨论】:
你应该可以这样做:
from docutils.core import publish_string
import jinja2
html = publish_string(source=text, writer_name='html')
node = jinja2.Markup(html)
node 是 Jinja 2 节点实际包含在您的范围内。
【讨论】: