如何在Django条件中使用for循环?

时间:2011-06-15 17:39:11

标签: python django

基本上,如果url中存在某个GET参数(在本例中为“latest”),我想用与通常不同的数字对对象列表进行切片。但这样做:

    {% if 'latest' in request.GET %}
        {% for object in object_list|slice:"22" %}
    {% else %}
        {% for object in object_list|slice:"10" %}
    {% endif %}

         // blah blah

    {% endfor %}

导致语法错误,因为Django期望结束endfor而不是else。有没有办法在条件句中使用循环?

2 个答案:

答案 0 :(得分:2)

你需要在for循环中拥有一个正文。

{% if 'latest' in request.GET %}
    {% for object in object_list|slice:"22" %} {{ object }} {% endfor %}
{% else %}
    {% for object in object_list|slice:"10" %} {{ object }} {% endfor %}
{% endif %}

没有它,你会说相当于以下Python代码:

if 'latest' in request.GET:
    for object in slice(object_list, 22):
        #No code here
else:
    for object in slice(object_list, 10):
        #No code here

这显然是一个错误。

答案 1 :(得分:0)

只需关闭每个条件内的for循环:

{% if 'latest' in request.GET %}
    {% for object in object_list|slice:"22" %}
        {{ object.name }}
    {% endfor %}

{% else %}
    {% for object in object_list|slice:"10" %}
        {{ object.name }}
    {% endfor %}
{% endif %}