Comment faire par défaut une variable dans jijna2 sur "" si l'objet est None au lieu de faire quelque chose comme ça?
{% if p %}
{{ p.User['first_name']}}
{% else %}
NONE
{%endif %}
Donc, si l'objet p est None, je veux par défaut les valeurs de p (prénom et nom) sur "". Fondamentalement
nvl(p.User[first_name'], "")
Erreur de réception:
Error: jinja2.exceptions.UndefinedError
UndefinedError: 'None' has no attribute 'User'
p
ne jamais retournerNone
. Au lieu de cela,None
la fonction doit renvoyer un objet proxy qui a la même structure qu'un objet réel mais qui est chargé avec les valeurs par défaut souhaitées.Réponses:
Utilisez la
none
fonction intégrée ( http://jinja.pocoo.org/docs/templates/#none ):ou
ou si vous avez besoin d'une chaîne vide:
la source
none
dans la réponse. Mon problème a été résolu après avoir corrigé le cas de None.la source
Selon la documentation, vous pouvez simplement faire:
Cause
None
castsFalse
dans un contexte booléen.Mise à jour : comme Lindes l'a mentionné, cela ne fonctionne que pour les types de données simples.
la source
default
est exactement ce dont j'avais besoin pour mon cas particulier, donc ... simplement ne pas voter. (Une modification de cette réponse pourrait bien lui valoir un vote positif, sauf que je pense que c'est probablement difficile à appliquerdefault
à cette situation)En plus d'autres réponses, on peut écrire autre chose si la variable est None comme ceci:
la source
x or y
estif x is false, then y, else x
. Voir: 5.2. Opérations booléennes - et, ou, pasEn suivant ce document, vous pouvez le faire de cette façon:
la source
Pour éviter de lancer une exception lorsque "p" ou "p.User" vaut None, vous pouvez utiliser:
la source
Comme autre solution (un peu similaire à certaines précédentes):
Notez que la dernière variable (p.User ['first_name']) n'a pas le
if defined
test après elle.la source
Je définis généralement une
nvl
fonction, et je la mets dansglobals
etfilters
.Utilisation dans un modèle:
la source
À partir d'Ansible 2.8, vous pouvez simplement utiliser:
Voir https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html#jinja-undefined-values
la source