我在工作中继承了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”并带有适当的红色标签,因此常规语法似乎还可以。
我检查了该行的dbshell,它显示is_rejected值为“ t”,是否可能上面的代码没有将“ t”识别为True?我尝试对row.is_rejected == t和“ t”进行测试,在第一种情况下,所有行都被拒绝,后来又得到了与上面普通代码相同的结果。
答案 0 :(得分:0)
感谢雷德尔·米兰达(Raydel Miranda)的评论,我设法找到了问题。实际上,模板没有引用与所讨论行相对应的DB或python对象。相反,views.py正在传递行字典,其中包含从python对象提取的行的
我对宇宙确定性的信念得以恢复。