if语句在for循环中不起作用

时间:2018-08-19 11:20:59

标签: django django-templates

我对if语句有疑问,需要一些帮助。这是html中的简短代码段:

          {% for category in categories %}
            {% if category == 'christmas' %}
            <p>{{category}} 1</p>
            {% else %}
            <p>{{category}} 2</p>
            {% endif %}
          {% endfor %}

通过for循环,我遍历ca tegories and check them with an if-statement中的字符串“ christmas”。该段始终是第二段,以2结尾。不过,似乎出现了名称为“圣诞节”的类别。这意味着,在if语句中的“类别”与在p标签中的不同。实际上,if语句中的类别为空。

为什么?有人可以帮忙吗?谢谢!

编辑:添加了两张图片。在右侧,您将看到输出:

length is zero showing no fit, although it should

1 个答案:

答案 0 :(得分:2)

我猜您正在从模型中遍历类别对象,这意味着categories不是字符串列表,而是查询集?在这种情况下,您应该执行以下操作:

      {% for category in categories %}
        {% if category.name == 'christmas' %}
        <p>{{category}} 1</p>
        {% else %}
        <p>{{category}} 2</p>
        {% endif %}
      {% endfor %}

用正确的属性替换.name

由于您的{{category}}__unicode__方法,您的__str__可能正确显示。