组合列表值以在django模板中显示

时间:2016-04-11 18:07:01

标签: python django django-templates

我正试图在django模板中显示几个调用某些设备API的结果。但是我在如何将结果传递给模板并以我想要的方式显示它时遇到了麻烦。

我有三个相应的列表。 池列表作为查询的初始输入(池的数量不固定):

pools_list = ['testpoolA', 'testpoolB']

从第一次API调用中获取的成员列表(获取每个池的成员列表):

members_lists = [
 [{'address': '10.10.10.11', 'port': 1616},
  {'address': '10.10.10.11', 'port': 1717},
  {'address': '10.10.10.12', 'port': 1616},
  {'address': '10.10.10.12', 'port': 1717}],
 [{'address': '10.20.20.11', 'port': 1212},
  {'address': '10.20.20.11', 'port': 1213},
  {'address': '10.20.20.12', 'port': 1212},
  {'address': '10.20.20.12', 'port': 1213}]
]

第二次API调用的成员优先级列表(从每个池中获取每个成员的优先级):

members_priorites_lists = [[0, 0, 1, 1], [0, 0, 1, 1]]

我想将其显示为:

游泳池名称1:

  • pool1 member1 addres,port,priority
  • pool1 member2 addres,port,priority (...)

游泳池名称2:

  • pool2 member1 addres,port,priority
  • pool2 member2 addres,port,priority (...)

在python中,我可以使用带有共享索引的嵌套循环来完成此操作。 但是从我到目前为止所读到的内容来看,它在django模板中是不可能的(尽可能地保留逻辑)。

那我该怎么做呢?我想我需要在视图中以某种方式准备数据结构,然后以某种不同的形式(一些准备好的字典?)将其传递给模板。但我不知道如何构建它然后在模板中访问它。 什么是最好的方法来解决这个问题?我真的很感激一些建议。

1 个答案:

答案 0 :(得分:0)

我不知道以这种复杂程度同时遍历多个列表的简单方法,但是,您可以在视图中执行以下操作:

>>> for i, members in enumerate(members_lists):
...     for j, member in enumerate(members):
...         member["priority"] = members_priorites_lists[i][j]
... return render(request, "main.html", {"members": zip(pools_list, members_lists)})

然后在模板中;

{% for pool, members_list in members %}
  Pool name: {{pool}}
  {% for member in members_list %}
    {{member.address}}, {{member.port}}, {{member.priority}}
  {% endfor %}
{% endfor %}