使用Jinja2模板标记时不会呈现Flask html

时间:2015-06-03 11:26:13

标签: python html flask jinja2 template-engine

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

public

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

欢迎所有提示!

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

时调用此值

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