为什么Django模板中的elif分支判断语句无法正常生效?
问题排查与解决方案
首先在模板循环内加入调试代码确认判断逻辑的执行情况:
{% for recruit in recruits_list %} <!-- 调试输出,确认每个字段值和判断结果 --> <p>当前accepted值:`{{ recruit.accepted }}` | 等于"Yes":{% if recruit.accepted == "Yes" %}是{% else %}否{% endif %} | 等于"No":{% if recruit.accepted == "No" %}是{% else %}否{% endif %}</p> {% if recruit.accepted == "Yes" %} <tr class="table-success"> {% elif recruit.accepted == "No" %} <tr class="table-danger"> {% else %} <tr> {% endif %}
刷新页面查看调试输出即可定位问题节点,对应解决方案如下:
- 若调试输出显示值前后存在空白:用
strip过滤器去除首尾不可见字符再判断{% for recruit in recruits_list %} {% with accept_status=recruit.accepted|strip %} {% if accept_status == "Yes" %} <tr class="table-success"> {% elif accept_status == "No" %} <tr class="table-danger"> {% else %} <tr> {% endif %} {% endwith %} - 若调试输出显示等值判断全为否:检查模型
accepted字段的类型,若为BooleanField或数字枚举类型,和实际存储值对齐判断条件即可,例:<!-- 字段为BooleanField类型时 --> {% if recruit.accepted %} <tr class="table-success"> {% elif recruit.accepted == False %} <tr class="table-danger"> {% else %} <tr> {% endif %} - 若上述排查均无问题:删除条件判断行重新手写,避免复制粘贴带入的全角符号、不可见特殊字符影响判断。
内容的提问来源于stack exchange,提问作者Tuumke
相关产品推荐
相关产品推荐

