2016-07-22 18 views
-1

我是Django的新手,我已经将两个列表(rawmaterialfood)传递给我的模板,然后我想要这样一个循环:(这是我的目标的逻辑,语法是不正确的)在Django中使用2个参数循环

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

你不能做Django的模板指数,但你可以只是把2所列出在一起,你的意见使用的.py功能zip

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++背景永远不会做:

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

相反,我们这样做:

for i in food: 
    print i 

Django的模板采用类似的语法,这使得编写一个循环很容易。

+0

非常感谢你! – user122434