Flask 和 HTML 变量

Flask and HTML Variables

我是 Flask 的新手,但想将其他库的一些 HTML 功能与 Flask 的模板功能集成在一起。在使用变量时,我无法理解渲染的不同行为 HTML。有时,如果我将 HTML 作为变量直接传递给视图,我可以获得渲染结果:

body = a bunch of HTML
@app.route('/')
def index():
    return '''
    {}
    '''.format(body)

但是,如果我尝试使用 {{ body }} 变量将其传递给模板,则不会呈现 HTML。相反,我会在页面上看到原始的 HTML。

@app.route('/')
def index():
     return render_template("index.html", b = body)

在 "index.html" 文件中,我使用 {{ b }} 模板语法调用它。在这里,我得到了原始的 HTML。我觉得我只缺少一小块。这是我分别看到的每种方法。

Jinja 会转义它解析的所有字符串,以避免意外地将 HTML 注入到您的模板中。要将变量标记为 "safe to use as-is",您需要使用 safe 模板过滤器。

{{ b|safe }}

>>> b = '<a href="#">Example</a>'

>>> render_template_string('{{ b }}', b=b)                                                
'&lt;a href=&#34;#&#34;&gt;Example&lt;/a&gt;'

>>> render_template_string('{{ b|safe }}')                                           
'<a href="#">Example</a>'