基本上,如果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。有没有办法在条件句中使用循环?
答案 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 %}