2017-01-24 36 views
0
{% for repo in repo_info %} 

{% for branch in branch_info[forloop.counter] %} 
      <li>Branch Name --> {{ branch }}</li>   
{% endfor %} 

{% endfor %} 

branch_info是列表的列表。如何解析django模板中的列表列表?

它給了我錯誤無法解析這個--->其餘branch_info [forloop.counter]

有什麼辦法來解析在列表元素這也是一個列表?

+1

請創建一個[mcve]。什麼是'branch_info'?你不能在django模板裏面使用python – Sayse

+0

相關:[使用迭代列表中的索引](http://stackoverflow.com/q/25245985/1324033) – Sayse

+0

你能分享'repo_info' var中的內容嗎? –

回答

0

您可以創建一個簡單的template tag所請求的指數

# some file named my_template_tags.py 
@register.simple_tag 
def at_index(data, index): 
    return data[index] 

這在返回的數據,如果你使用一個無效的指數會拋出異常。如果你不想要一個異常,你將不得不趕上它並返回一些有效的數據。

它也可以與字典一起使用,但您傳遞的是鍵而不是索引。

{% load my_template_tags %} 

{% for repo in repo_info %} 

    {% for branch in branch_info|at_index:forloop.counter %} 
      <li>Branch Name --> {{ branch }}</li>   
    {% endfor %} 

{% endfor %} 
0

大多數情況下,當您的模板代碼開始像這樣混亂時,這意味着您的數據沒有正確的結構。在這種情況下,您似乎依賴repo_infobranch_info爲「並行序列」(branch_info[x]處的數據用於回購repo_info[x])。

最乾淨的解決辦法是repo持有它的branch自己的列表中,這樣你可以遍歷repo_info,然後爲每個回購疊代repo.branches

如果不能輕鬆地組織你的數據這種方式,另一種解決方案是zip(或itertools.iziprepo_infobranch_info一起在您的視圖,以便您可以在您的模板(repo, branches)元組進行迭代。