2016-11-15 52 views
7

我试图写在神社模板中的if语句“如果”在Jinja2的模板声明

{% for key in data %} 
{% if key is 'priority' %} 
<p>('Priority: ' + str(data[key])</p> 
{% endif %} 
{% endfor %} 

我想在python翻译的语句是

if key == priority: 
    print(print('Priority: ' + str(data[key])) 

这是错误我得到:

TemplateSyntaxError: expected token 'name', got 'string'

+1

'is'应该相对于一个类型时,可以使用,例如'如果var是列表'。在你的情况下,你需要'key =='priority''。 –

+0

@NicoleWhite在python中,测试'if var is list'不检查'var'是否是一个列表...它检查'var'是否确切类型'list' ...在'jinja2'中'if var是list'寻找名为'list'的测试......根本不可能存在! – donkopotamus

+0

对不起,意思是'type(var)is list'。 –

回答

16

为什么循环?

你可以简单地这样做:

{% if 'priority' in data %} 
    <p>Priority: {{ data['priority'] }}</p> 
{% endif %} 

当你最初做你的字符串比较,你应该使用==代替。

+0

我现在已经低估了,不需要引用Priority或者'{{}}'内的'str'。即它应该是'

优先权:{{data [“priority”]}}

' – donkopotamus

+0

@donkopotamus - 是的,你说得对。纠正。 – Nicarus

+0

我碰过它:-) – donkopotamus

2

我们需要记住{% endif %}{%else%}之后。

因此,这是一个例子:

{%if someTest%} 
    <p>Something is True</p> 
{%else%} 
    <p>Something is False</p> 
{% endif %} 
+1

在Jinja中,if语句不以冒号':'结尾,如你的例子。 – Nicarus