Как использовать цикл for в условном выражении Django? - PullRequest
0 голосов
/ 15 июня 2011

В основном, если в URL есть определенный параметр GET (в данном случае «последний»), я хочу нарезать список объектов на число, отличное от обычного.Но при этом:

    {% 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 ]

2 голосов
/ 15 июня 2011

Вам нужно иметь тело в цикле 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

, что, очевидно, является ошибкой.

0 голосов
/ 15 июня 2011

Просто закройте цикл 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...