在Jinja2中禁用autoescape后重新启用autoescape

时间:2015-10-12 10:46:57

标签: python flask jinja2

我正在使用Flask和Jinja2写一个简单的博客,我想在帖子中使用HTML标签。
所以我在我的模板中禁用了 autoescape ,如下所示:

{{ post.body|safe }}

但是当我写>>> print()it's之类的内容时,我不想自己逃避它们,我想再次启用 autoescape 。是否有像HTML标签那样的东西?

1 个答案:

答案 0 :(得分:1)

好吧,如果你想在post.body中使用HTML,那么你必须处理一些符号必须在HTML中转义的事实,例如: >应为&gt;。第二个选项是使用<pre>。第三个选项是对正文进行后处理,以便像>>>这样的代码部分自动转义。例如:

class Post:
    body = "<span><code>>>> print('Hello world')</code></span>"

    @property
    def html_body(self):
        # 1. Locate all <code>...</code> blocks
        # 2. Convert the text in them to proper HTML
        ...
        return processed_body

    # which should return 
    # "<span><code>&gt;&gt;&gt; print(&apos;Hello world&apos;)</code></span>"