J'ai un python:
settings = {
"foo" : "baz",
"hello" : "world"
}
Cette variable settings
est alors disponible dans le modèle Jinja2.
Je veux vérifier si une clé myProperty
existe dans le settings
dict de mon modèle, et si c'est le cas, prenez les mesures suivantes:
{% if settings.hasKey(myProperty) %}
takeSomeAction();
{% endif %}
Quel est l'équivalent de hasKey
que je peux utiliser?
Comme Mihai et Karelv l'ont noté, cela fonctionne:
{% if 'blabla' in item %}
...
{% endif %}
J'ai un 'dict object' has no attribute 'blabla'
si j'utilise {% if item.blabla %}
et item
ne contient pas de clé blabla
Cette fonctionne bien ne fonctionne pas dans les cas impliquant des dictionnaires. Dans ces cas, veuillez vous reporter à la réponse de tshalif. Sinon, avec SaltStack (par exemple), vous obtiendrez cette erreur:
Unable to manage file: Jinja variable 'dict object' has no attribute '[attributeName]'
si vous utilisez cette approche:
{% if settings.myProperty %}
note:
Sautera également, si settings.myProperty
existe, mais est évalué comme False
(par exemple, settings.myProperty = 0
).
Vous pouvez tester la définition de clé de cette façon:
{% if settings.property is defined %}
#...
{% endif %}