{% if bCat2 == True %}
<div>True</div>
{% else %}
<div>False</div>
即使<div>False</div>
为bCat2
,也会返回True
。
谢谢,
安德鲁
答案 0 :(得分:34)
这部分文档可以帮助您:
特殊常量true,false和none确实是小写的。 因为这在过去引起了混乱,所以写True时会扩大 对于一个被认为是假的未定义变量,它们都是三个 也可以用标题大小写(真,假和无)。但是 一致性(所有Jinja标识符都是小写)你应该使用 小写版本。
来源:http://jinja.pocoo.org/docs/templates/
尝试该代码:
{% if bCat2 == true %}
<div>True</div>
{% else %}
<div>False</div>
{% endif %}
答案 1 :(得分:12)
要测试模板中的布尔变量,请将其转换为Python中的字符串
str(bCat2)
然后将其与模板中的字符串进行比较
{% if bCat2 == 'True' %}
<div>True</div>
{% else %}
<div>False</div>
答案 2 :(得分:8)
在Jinja2中执行此操作的正确方法是:
{% if bCat2 is sameas true %}
<div>True</div>
{% elif bCat2 is sameas false %}
<div>False</div>
{% endif %}
你不能做的原因
{% if bCat2 == true %}
如果bCat2 == 1或bCat2 == 1.0,它也将被视为True。
答案 3 :(得分:5)
像python一样解决这个问题。
{% if bCat2 %}
<div>True</div>
{% else %}
<div>False</div>
{% if not bCat2 %}
<div>False</div>
{% else %}
<div>True</div>
像jinja2一样解决。使用布尔小写字母 Becareful 。
{% if bCat2 is sameas true %}
<div>True</div>
{% endif %}
{% if bCat2 is sameas false %}
<div>False</div>
{% endif %}
答案 4 :(得分:1)
我想补充一点,如果您的逻辑有点复杂,则可能需要阅读有关范围的信息。
从2.10版开始,可以使用以下方法处理更复杂的用例 允许跨范围传播更改的名称空间对象:
{{1}}
答案 5 :(得分:0)
拿这个:
{% if bCat2 is true %}
<div>True</div>
{% else %}
<div>False</div>
{% endif %}
我的测试:
$ python -m pip install j2cli
$ j2 <(echo "{% if false is true %}
<div>True</div>
{% else %}
<div>False</div>
{% endif %}")
<div>False</div>
$ j2 <(echo "{% if true is true %}
<div>True</div>
{% else %}
<div>False</div>
{% endif %}")
<div>True</div>