jinja2 + reStructured Markup

时间:2012-07-03 11:23:58

标签: python html flask jinja2 restructuredtext

这个想法如下。我使用类似于stackoverflow的标签向jinja2发送一些文本。如何告诉jinja2将它们视为包含文本的标记并在html中生成粗体,斜体等文本?

谢谢。

2 个答案:

答案 0 :(得分:4)

我习惯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

答案 1 :(得分:3)

你应该可以这样做:

from docutils.core import publish_string
import jinja2

html = publish_string(source=text, writer_name='html')
node = jinja2.Markup(html)

node是实际包含在范围内的Jinja 2节点。