【问题标题】:Loop in django with 2 parameter [duplicate]使用2个参数在django中循环[重复]
【发布时间】:2025-11-27 00:30:02
【问题描述】:

我是 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})

【问题讨论】:

    标签: html django templates


    【解决方案1】:

    你不能在 django 模板上做索引,但你可以使用 zip 函数将 2 个列表放在你的 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 模板采用了类似的语法,它使编写循环变得更加容易。

    【讨论】:

    • 非常感谢!