You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django模板标签检查对象布尔字段是否为True?

Django模板中检查布尔字段的正确姿势

哈哈,我太懂这种踩模板语法坑的感觉了!你这两个写法的问题我给你拆解下:

为什么你的写法不对?

  • 第一种写法{% if {{ obj.bool }} == True %} HELLO {% endif %}:
    Django模板标签({% ... %})内部不需要再嵌套变量插值的{{ ... }},模板解析器会直接识别标签里的变量名,你加了{{就会触发语法错误,这是典型的混淆了模板标签和变量插值的语法。

  • 第二种写法{% if '{{ obj.bool }}' == 'True' %} <p>HELLO</p> {% endif %}:
    你把{{ obj.bool }}用单引号括起来后,它就变成了一个固定的字符串'{{ obj.bool }}',而不是变量的实际值,所以和字符串'True'比较自然不相等,也就不会输出内容啦。

正确的写法有这些:

  1. 最简洁的方式(推荐):
    因为布尔值本身就可以直接作为if的判断条件,直接写:

    {% if obj.bool %}
        <p>HELLO</p>
    {% endif %}
    

    当obj.bool为True时就会显示HELLO,非常直观。

  2. 显式比较布尔值:
    如果想要更明确地写出比较逻辑,直接在模板标签里使用变量名和True比较,不要加{{ }}:

    {% if obj.bool == True %}
        <p>HELLO</p>
    {% endif %}
    
  3. 使用is判断(更严谨):
    对于布尔值这种单例对象,用is判断身份会更准确,写法是:

    {% if obj.bool is True %}
        <p>HELLO</p>
    {% endif %}
    

内容的提问来源于stack exchange,提问作者Ruth Young

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:14:04