使用 Jinja2 模板标签时 Flask html 未呈现

Flask html not rendered when using Jinja2 templating tag

我正在使用(很棒的)Flask framework 构建网站,但我现在遇到 html 无法正确呈现的问题。我的模板中有一行带有 if-else 取决于 public 变量是否为真:

{{ theInfo if public else '<span style="background-color: green;">this info is hidden</span>' }}

不幸的是,这只是在浏览器中显示 html,而不是渲染它。我是否需要以某种方式让 Jinja 知道它的 html 应该被渲染?

欢迎所有提示!

如果您想根据某个值显示不同的 html,您需要先在调用 render_template

时发送该值

python

def view():
   variablename = True
   return flask.render_template('page.html', public=variablename)

要检查此值,请在大括号内添加一个 if 语句,请参见下面的代码

html

{% if public %}
    <p>Public is true!</p>
{% else %}
    <span ..../>
{% endif %}

最好的第一步是阅读 Miguel Grinberg 的教程。 http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

默认情况下 Jinja 转义传递的数据。因此,您需要明确告诉 Jinja 数据是 safe 以使用:

{{ theInfo if public else '<span style="background-color: green;">this info is hidden</span>' | safe }}