用2参数循环django

时间:2016-07-22 21:06:11

标签: html django templates

我是Django的新手,我已经将两个列表(rawmaterialfood)传递给了我的模板,然后我希望得到一个这样的循环:(它是我的目标逻辑,语法不正确)

for(i=0;i<food.length;i++)
   <div ,id="menuFood>
   <h4> food.name(i)</h4>
   <h4> rawmaterial.name(i)</h4>
   </div>

但是当我搜索时,我只能找到这样的循环:

{% for o in some_list %}
{% endfor %}

所以使用这种语法,我无法理解如何创建该循环。我认为只有嵌套循环可以通过这种语法来实现..

这是我的观看代码:

    def foods(request):
    food = Food.objects.all()
    raw = [];
    .
    .
    .
    raw.append(warehouse)
    return render(request, 'polls/foods.html', {'food': food,'rawmaterial': raw})

1 个答案:

答案 0 :(得分:1)

您无法在django模板上执行索引,但您可以使用zip函数将两个列表放在views.py中:

food = Food.objects.all()
raw = []
# ...
raw.append(warehouse)

result = zip(food, raw)
return render(request, 'polls/foods.html', {'result': result})

然后在你的模板中:

{% for food, raw in result %}
<h4>{{ food }}</h4>
<h4>{{ raw }}</h4>
{% endfor %}

顺便说一句,你似乎来自java / c ++背景,因为在python中人们永远不会这样做:

for(i=0; i<food.length; i++)
    print food[i]

相反,我们这样做:

for i in food:
    print i

Django模板采用了类似的语法,它使编写循环变得更加容易。