如何在Django模板中对true/false类型变量执行if条件判断
Django模板布尔值判断及下拉选择框实现方案
一、布尔类型变量的if判断方法
Django模板的{% if %}标签原生支持布尔值判断,使用规则如下:
- 直接写变量名即可判断是否为True:
{% if is_checked %} <!-- 变量为True时展示的内容 --> {% endif %}
- 判断变量为False的写法:
{% if not is_checked %} <!-- 变量为False时展示的内容 --> {% endif %}
- 如需严格匹配布尔类型(避免空字符串、0等假值被误判),可明确等值判断:
{% if some_bool == True %} <!-- 仅变量为布尔值True时触发 --> {% endif %}
二、下拉选择框代码修正
你当前的代码逻辑完全颠倒:匹配到对应company_id的option没有加selected属性,反而给所有不匹配的option加了selected,会导致下拉框默认选中最后一个不匹配的选项。修正后的代码如下:
<select id="company_id" name="company_id" class="form-control"> <option value="">Select Company {{company_id}}</option> {% for row in brands %} {% if row.id == company_id %} <option value="{{ row.id }}" selected>{{ row.title }}</option> {% else %} <option value="{{ row.id }}">{{ row.title }}</option> {% endif %} {% endfor %} </select>
常见兼容问题处理
如果出现判断不生效的情况,大概率是类型不匹配导致:比如视图传过来的company_id是字符串类型,而row.id是整数类型,可通过过滤器转成同类型再判断:
{% if row.id == company_id|add:"0" %}
内容的提问来源于stack exchange,提问作者vinitha
相关产品推荐
相关产品推荐

