Перебор списков в шаблоне django - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть разные списки

context = {
    'query' : request.POST['query'],
    'link' : link,
    'description' : description,
    'title' : title,
    'thumbnail' : thumb,
    'range' : range(len(title)),
}

И я хочу перебрать их что-то вроде:

for i in range(20):
    link[i]
    title[i]

В шаблоне django.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Обычно вы обычно не используете конструкцию zip в представлении, а затем выполняете итерацию одновременно для обоих (или более) итераторов:

context = {
    'query' : request.POST['query'],
    'linktitle' : <b>zip(link, title)</b>,
    'description' : description,
    'thumbnail' : thumb,
    'range' : range(len(title)),
}

и затем в шаблоне:

{% <b>for linki, titlei in linktitle</b> %}
   {{ linki }} / {{ titlei }}
{% endfor %}

Если вас интересуют только первые 20 элементов, вы можете добавить range(20) в zip или использовать islice:

from itertools import <b>islice</b>

context = {
    'query' : request.POST['query'],
    'linktitle' : <b>islice(</b>zip(link, title)<b>, 20)</b>,
    'description' : description,
    'thumbnail' : thumb,
    'range' : range(len(title)),
}
0 голосов
/ 30 сентября 2018

Вероятно, вам лучше создать пары ссылок-заголовков в вашем представлении, где у вас есть полный арсенал Python (например, zip):

context = {
    'link' : link,
    'title' : title,
    'link_title': list(zip(link, title)),
    # ...
}

ВыПри необходимости можно нарезать этот список удобства в шаблоне:

{% for l, t in link_title|slice:":20" %}
    # do stuff with l, t
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...