我正在尝试转换此HTML
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-danger" role="alert">
Error: {{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith %}
对玉来说。我试过了
with messages = get_flashed_messages()
if messages
for message in messages
.alert.alert-danger(role="alert")
Error: {{message}}
endfor
endif
endwith
但是“messages = get_flashed_messages()”只是打印到页面上。关于何时使用jade语法以及何时使用flask / Jinja2语法,我仍然感到有点困惑。
答案 0 :(得分:0)
我没有太多使用jade或pyjade,但我使用了jinja2和python 3.x.基于jade和pyjade文档,你所拥有的不是有效的jade语法:jade不支持Jinja&#39; with statement,pyjade也不支持在你的jade模板中嵌入python代码(另请参阅示例{{ 3}})。
因此,您必须使用不同的构造。这应该是相当简单的,因为with
只是为with语句的变量创建了一个内部范围;在此范围之外,with
变量不可见。 &#34;如果消息&#34;仅当messages
可以是None
而不是空列表时才需要。所以尝试这样的事情:
if messages
for message in get_flashed_messages()
.alert.alert-danger(role="alert")
Error: {{message}}
我认为你使用的是python 2.7,因为使用python 3.4甚至pyjade网站的基本示例都不起作用。
但是你使用endfor
等等让我觉得你没有看过玉器文档,它没有提及这些关键字,并清楚地表明它们不是必需的。正如他们所说,&#34; RTFM&#34;,它总是有帮助,那么你的问题可以更具体。