web-dev-qa-db-ja.com

Jinja2テンプレートのPython dictにキーが存在するかどうかを確認します

python辞書:

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

この変数settingsは、Jinja2テンプレートで使用できます。

キーmyPropertyがテンプレート内のsettings dictに存在するかどうかを確認したい場合は、何らかのアクションを実行します。

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

使用できるhasKeyと同等のものは何ですか?

42
Amal Antony

Mihaiとkarelvが指摘したように、これは機能します:

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

'dict object' has no attribute 'blabla'使用する場合{% if item.blabla %}およびitemにはblablaキーが含まれていません

101
tshalif

この 正常に動作します 辞書を含む場合には機能しません。そのような場合は、tshalifによる回答をご覧ください。そうでない場合、SaltStack(たとえば)を使用すると、次のエラーが表示されます。

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

このアプローチを使用する場合:

{% if settings.myProperty %}


settings.myPropertyは存在しますが、Falseとして評価されます(例:settings.myProperty = 0)。

12
Mihai Zamfir

この方法でキー定義をテストできます。

{% if settings.property is defined %}

#...
{% endif %}
7
ma3oun