一尘不染

遍历Django模板中的两个列表

django

我想在Django模板中进行以下列表迭代:

foo = ['foo', 'bar'];
moo = ['moo', 'loo'];

for (a, b) in zip(foo, moo):
    print a, b

django代码:

{%for a, b in zip(foo, moo)%}
  {{a}}
  {{b}}
{%endfor%}

尝试此操作时出现以下错误:

File "/base/python_lib/versions/third_party/django-0.96/django/template/defaulttags.py", line 538, in do_for
    raise TemplateSyntaxError, "'for' statements should have either four or five words: %s" % token.contents

我该如何完成?


阅读 738

收藏
2020-03-27

共2个答案

一尘不染

有可能做

{% for ab in mylist %}
    {{ab.0}}
    {{ab.1}}
{% endfor %}

但你无法zip在for结构内进行调用。你必须先将压缩列表存储在另一个变量中,然后对其进行迭代。

2020-03-27
一尘不染

你可以zip在自己的视图中使用:

mylist = zip(list1, list2)
context = {
            'mylist': mylist,
        }
return render(request, 'template.html', context)

并在你的模板中使用

{% for item1, item2 in mylist %}

遍历两个列表。

这应该适用于所有版本的Django。

2020-03-27