2016-12-08 2 views
0

У меня есть список ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'].Нарезка в шаблоне Django

В моих шаблонах Django, я хочу вывод как

a b 
c d 
e f 
g h 

Это то, что я делаю: -

{% for i in list|slice:"::2" %} 
    {{i}} {{}} // how do I get the second element? 
{% endfor %} 

Что мне не хватает?

Ниже питон эквивалент: -

for i in range(0, len(list), 2): 
    print list[i], list[i+1] 

ответ

3

Я понятия не имею, что вы подразумеваете под «вторым элементом». Нарезка списка, подобного этому, даст вам ['a', 'c', 'e', 'g'], а i будет каждый по очереди.

Я подозреваю, что вы не хотите этого делать вообще; вы, вероятно, хотите просмотреть весь список и использовать {% if forloop.counter|divisibleby:2 %}, чтобы определить, когда нужно вставлять новый абзац или тег разрыва.

+0

Привет Даниэль, Пожалуйста, посмотри на обновленный вопросе (Питон эквивалент). – PythonEnthusiast

+0

Это совсем не эквивалентно. «Эквивалент Python» будет «для i в lst [:: 2]». –

+0

Моя ошибка. Да, 'для i в lst [:: 2]' будет более подходящим. Как я могу напечатать индекс 'i'th и' i + 1' в шаблоне django. – PythonEnthusiast

1

В дополнение к предыдущему ответу. Вы также можете использовать для этого cycle tag.

{% for el in my_list %} 
    {{ el }} 
    {% cycle ' ' '<br>' %} 
{% endfor %} 

даст вам желаемый результат:

a b 
c d 
e f 
g h