Django模板中的迭代列表

时间:2018-09-30 13:14:35

标签: django python-3.x list for-loop

我有不同的列表

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 :(得分:2)

您最好在可以使用完整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 %}

答案 1 :(得分:1)

通常,通常在视图中不使用zip构造,然后在两个(或多个)迭代器上同时进行迭代:

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

,然后在模板中:

{% for linki, titlei in linktitle %}
   {{ linki }} / {{ titlei }}
{% endfor %}

如果仅对前20个元素感兴趣,则可以在邮政编码中添加range(20),或使用islice

from itertools import islice

context = {
    'query' : request.POST['query'],
    'linktitle' : islice(zip(link, title), 20),
    'description' : description,
    'thumbnail' : thumb,
    'range' : range(len(title)),
}
相关问题