在我的Django / Python应用程序中,我将多个可迭代对象从views.py传递给index.html。 我本质上是在尝试制作一个标准的循环,你可以通过它的索引获得一个项目。一旦我遍历第一个对象,我怎样才能在同一个循环中获得另一个iterable的相应索引?
条件:所有数组的长度总是相等,但它们的长度会每天变化。
的 views.py
name = ['John', 'Kim', 'Tim', 'Jill']
age = ['20', '30', '52', '27']
state = ['IN', 'IL', 'CA', 'TX']
city = ['Muncie', 'Champaign', 'Fresno', 'Dallas']
def index(request):
args = {'names': name, 'ages': age, 'states': state, 'cities': city}
return render(request, 'index.html', args)
的index.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block Data %}
{% for name in names %}
<p>{{ name }}</p>
<p>{{ age.forloop.counter0 }}</p>
<p>{{ state.forloop.counter0 }}</p>
<p>{{ city.forloop.counter0 }}</p>
{% endfor %}
{% endblock %}
正如你所看到的,我以为我会使用&#39; forloop.counter0&#39;作为我的索引。但它显然不会那样工作。关于如何实现这一目标的任何建议? 提前谢谢!
答案 0 :(得分:1)
您可以zip
视图中的列表并将其解压缩到模板中:
def index(request):
data = zip(name, age, state, city)
args = {'data': data}
return render(request, 'index.html', args)
然后在模板中:
{% for name, age, state, city in data %}
{{ name }}
{{ age }}
{{ state }}
{{ city }}
{% endfor %}
您还可以使用具有适当属性的对象或命名元组。
答案 1 :(得分:0)
我认为你要找的是“for loop counter”。您可以使用{{forloop.counter}}索引从1开始或{{forloop.counter0}}索引从0开始。
r[0]["24h_volume_usd"]