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)
'<a href="#">Example</a>'
>>> render_template_string('{{ b|safe }}')
'<a href="#">Example</a>'
我是 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)
'<a href="#">Example</a>'
>>> render_template_string('{{ b|safe }}')
'<a href="#">Example</a>'