我想在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
我该如何完成?
有可能做
{% for ab in mylist %} {{ab.0}} {{ab.1}} {% endfor %}
但你无法zip在for结构内进行调用。你必须先将压缩列表存储在另一个变量中,然后对其进行迭代。
你可以zip在自己的视图中使用:
mylist = zip(list1, list2) context = { 'mylist': mylist, } return render(request, 'template.html', context)
并在你的模板中使用
{% for item1, item2 in mylist %}
遍历两个列表。
这应该适用于所有版本的Django。