2016-04-11 21 views
2

'da listelenecek değerleri bir araya getirme Django şablonunda bazı cihazların API'sine yapılan birkaç çağrının sonucunu görüntülemeye çalışıyorum. Ama sonuçları şablona nasıl aktaracağım ve onları istediğim şekilde gösterebileceğim sıkıntılarım var.Django şablonu

Üç tane karşılık gelen listelerim var. (Havuzları miktarı sabit değildir) sorgu için bir başlangıç ​​girdi olarak havuzların listesi: İlk API çağrısı alınan üyelerin

pools_list = ['testpoolA', 'testpoolB'] 

listesi (her havuzun üye listesini almak):

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}] 
] 

ikinci API çağrısından üyeleri öncelikler listesi (her havuzdan her üye öncelik almak):

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

Ve bu görüntülemek istediğiniz:

Havuz isim1:

  • pool1 member1 addres, liman, öncelik
  • pool1 member2 addres, liman, öncelik (...)

Havuz isim2:

  • pool2 member1 addres, bağlantı noktası, öncelik
  • pool2 üye2 adres, bağlantı noktası, öncelik (...)

Python'da bunu paylaşılan dizinli yuvalanmış döngülerle yapabilirim. Fakat şu ana kadar okuduğum django şablonunda mümkün değil (mantığı olabildiğince fazla tutmak için).

Peki bunu nasıl yapabilirim? Sanırım veri yapısını bir şekilde bir şekilde hazırlamalıyım ve sonra şablona farklı bir biçimde (bazı hazırlanmış sözlükler?) Iletmem gerekecek. Ama nasıl inşa edeceğimi bilmiyorum ve şablona erişeceğim. Buna yaklaşmanın en iyi yolu ne olurdu? Bazı tavsiyeleri gerçekten takdir ediyorum.

cevap

0

Ben ancak, sizin görünümünde aşağıdakileri yapabilirsiniz, karmaşıklık bu seviyede aynı anda birden fazla listeleri çapraz için kolay bir yol bilmiyorum: şablonda Sonra

>>> 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 %} 
+0

Mükemmel bir ipucuydu. Bana tam olarak istediğim sonucu getiriyor. Teşekkür ederim! – daro