【问题标题】:Django Template: looping through two listsDjango模板:遍历两个列表
【发布时间】:2014-03-12 17:05:43
【问题描述】:

我有两个 Django 模型对象列表,我想在模板上显示它们。 list1 是一维数组,list1 是二维数组。在模板中,我想循环遍历list1中的每个元素,显示其值,然后显示list2中对应元素的所有值。

比如list1 = ['Andrew', 'Ben,' 'Charles']list2 = [[3, 4, 8], [12, 9], [10, 0, 5, 1]],那么我要显示:

- Andrew
    - 3
    - 4
    - 8
- Ben
    - 12
    - 9
- Charles
    - 10
    - 0
    - 5
    - 1

我的问题是,在我的模板中,如何循环遍历list1,然后访问list2 的相应元素?以下代码是我目前所拥有的:

<ul>
    {% for name in list1 %}
    <li>{{ name }}
        <ul>
            {% for A %}
            <li>{{ B }}</li>
            {% endfor %}
        </ul>    
    </li>
    {% endfor %}
</ul>

我应该写什么来代替AB

【问题讨论】:

    标签: django


    【解决方案1】:

    在 python 视图中,您可以将它们压缩在一起。

    view.py

    ​​>
    def someview(request):
        list1 = ['Andrew', 'Ben,' 'Charles']
        list2 = [[3, 4, 8], [12, 9], [10, 0, 5, 1]]
        zipped_list = zip(list1, list2)
        return render(request, 'base/home.html', {'zipped_list': zipped_list})
    

    base/home.html

    <ul>
        {% for item1 in zipped_list %} <- this is now a tuple with the first element being our first item and the second element being a list
        <li>{{ item1.0 }}
            <ul>
                {% for secondItem in item1.1 %}
                    <li>{{ secondItem }}</li>
                {% endfor %}
            </ul>    
        </li>
        {% endfor %}
    </ul>
    

    【讨论】:

      【解决方案2】:

      您应该在视图中将它们压缩在一起。

      combined_list = zip(list1, list2)
      

      然后在你的模板中你可以这样做:

      {% for item in combined_list %}
          {{ item.0 }}
          {% for value in item.1 %}
               {{ item.1 }}
          {% endif %}
      {% endif %}
      
      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 2010-10-21
      • 2023-03-06
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2013-04-08
      相关资源
      最近更新 更多