{% if bCat2 == True %}
<div>True</div>
{% else %}
<div>False</div>
Retour <div>False</div>
même quand bCat2
est True
. Merci, andrew
Pour tester une variable booléenne dans un modèle, convertissez-le en une chaîne en python.
str(bCat2)
puis comparé à une chaîne dans le gabarit
{% if bCat2 == 'True' %}
<div>True</div>
{% else %}
<div>False</div>
Cette partie de la documentation peut vous aider:
Les constantes spéciales vraies, fausses et aucune sont effectivement minuscules. Parce que cela a provoqué une confusion dans le passé, lors de l'écriture véritable se développe à une variable non définie considérée comme fausse, les trois peuvent être écrites dans un cas de titre aussi (vrai, faux et aucun). Toutefois, pour la consistance (tous les identificateurs de Jinja sont minuscules) , vous devez utiliser les versions minuscules .
Source: http://jinja.pocoo.org/docs/templates/
Essayez ce code:
{% if bCat2 == true %}
<div>True</div>
{% else %}
<div>False</div>
{% endif %}
La bonne façon de le faire à Jinja2 est la suivante:
{% if bCat2 is sameas true %}
<div>True</div>
{% Elif bCat2 is sameas false %}
<div>False</div>
{% endif %}
La raison pour laquelle vous ne pouvez pas faire
{% if bCat2 == true %}
est-ce que si bcat2 == 1 ou bcat2 == 1.0, il sera également considéré comme vrai.
Je voudrais ajouter que si votre logique est un peu plus complexe, vous voudrez peut-être lire sur les champs.
Comme mentionné dans Documentation officielle :
À partir de la version 2.10, des cas d'utilisation plus complexes peuvent être traités à l'aide d'objets d'espace de noms qui permettent la propagation des changements entre les champs électroniques:
{% set ns = namespace(found=false) %}
{% for item in items %}
{% if item.check_something() %}
{% set ns.found = true %}
{% endif %}
* {{ item.title }}
{% endfor %}
Found item having something: {{ ns.found }}