检查Jinja2模板中的Python dict中是否存在密钥

时间:2015-01-02 09:45:48

标签: python django jinja2

我有一个python字典:

settings = {
   "foo" : "baz",
   "hello" : "world"
}

此变量settings随后可在Jinja2模板中使用。

我想检查模板中myProperty字典中是否存在密钥settings,如果是,请采取一些措施:

{% if settings.hasKey(myProperty) %}
   takeSomeAction();
{% endif %}

我可以使用的hasKey相当于什么?

3 个答案:

答案 0 :(得分:95)

像Mihai和karelv所说,这有效:

{% if 'blabla' in item %}
  ...
{% endif %}

如果我使用'dict object' has no attribute 'blabla'并且{% if item.blabla %}不包含item密钥,则会收到blabla

答案 1 :(得分:13)

这个工作正常在涉及字典的情况下不起作用。在这些情况下,请查看tshalif的答案。 否则,使用SaltStack(例如),您将收到此错误:

Unable to manage file: Jinja variable 'dict object' has no attribute '[attributeName]'

如果你使用这种方法:

{% if settings.myProperty %}

注意
如果settings.myProperty存在,也会跳过,但评估为False(例如settings.myProperty = 0)。

答案 2 :(得分:6)

您可以通过以下方式测试键定义:

{% if settings.property is defined %}

#...
{% endif %}