如果Django模板中的条件未到达某些分支

时间:2019-02-07 18:23:14

标签: html django django-templates

我在工作中继承了django 2.0项目,并试图对html模板文件中的条件进行简单的更改,但无法使其到达新的分支。我怀疑有语法问题,但找不到。

我有一堆行,其中一些被拒绝,一些正在等待批准,一些被接受。该代码旨在适当地显示它们:

<td class="vert-align blue-madison block">
    {% if row.is_rejected %}
        <span class="label label-sm label-danger">
            Rejected
        </span>
    {% elif not row.is_active %}
        <span class="label label-sm label-warning">
            Pending review
        </span>
    {% elif row.id|row_is_pending_deletion %}
        <span class="label label-sm label-danger">
            Pending deletion
        </span>
    {% else %}
        <span class="label label-sm label-success">
            Active
        </span>
    {% endif %}
</td>

四个分支;已拒绝,待审核,待删除和有效。
进行中和待审的工作正常。我尚未测试“待删除”。拒绝了新分支,但我无法像上面那样显示它。

我知道最近的行已被拒绝,因为我已经在Django shell中对其进行了测试

>>> row.is_rejected
True

我知道这是同一行,因为我一直想确保该行中的数据在外壳程序和ui之间匹配。

如果我将上面的代码更改为“ {%if not row.is_rejected%}”,那么所有行都将显示为“ Rejected”并带有适当的红色标签,因此常规语法似乎还可以。

我检查了该行的dbshel​​l,它显示is_rejected值为“ t”,是否可能上面的代码没有将“ t”识别为True?我尝试对row.is_rejected == t和“ t”进行测试,在第一种情况下,所有行都被拒绝,后来又得到了与上面普通代码相同的结果。

1 个答案:

答案 0 :(得分:0)

感谢雷德尔·米兰达(Raydel Miranda)的评论,我设法找到了问题。实际上,模板没有引用与所讨论行相对应的DB或python对象。相反,views.py正在传递行字典,其中包含从python对象提取的行的 partial 数据(特别是id和is_active字段。我对其进行了修改以添加is_rejected字段,现在一切正常

我对宇宙确定性的信念得以恢复。