2016-04-27 71 views
0

views.py:django的 - 如何{在members.0%%對每個}編輯這個增加構件索引通過一個for循環

def main(request): 
    ...... 
    people = ['shargh', 'tehran'] 
    divvs = [str(i) for i in range(2)] 
    members = {} 
    n = 0 
    for divv in divvs: 
     members[divv] = PUserSlidertxt.objects.filter(ostan=os, shahr=sh, senf=senf, username=people[n]) 
     n = n+1 
    return render(request, 'main.html', {'members': members, ....}) 

隨着main.html中文件{{ members }},輸出將是:

{'0': [<PUserSlidertxt: hi>, <PUserSlidertxt: hello>], '1': [<PUserSlidertxt: goodbye>]} 

現在我試試這個在main.html中:

{% for each in members.0 %} 
    <tr><td style="border:1px solid black; height: 50px;">{{ each.slidertxt }}<br></td></tr> 
{% endfor %} 

我怎樣才能提高會員的索引這裏有someth ing這樣:

{% for each in members.i %} 

i應該增加。

+0

你可以用'{{foorloop.counter}}'裏面一個for循環。它在循環的每次迭代中遞增。但那可能不是你想要的。你能告訴我們你到底想要達到什麼目的嗎? – xyres

回答

0

i是變量時,Django模板語言無法訪問模板中的members[i]

您可以編寫客戶模板標籤。但是,在這種情況下,我認爲最好將清單列表傳遞給模板,而不是字典。

members_list = [] 
n = 0 # it's not clear why you need n here. Can't you use divv? 
for divv in divvs: 
    members = PUserSlidertxt.objects.filter(ostan=os, shahr=sh, senf=senf, username=people[n]) 
    members_list.append(members) 
    n = n+1 

return render(request, 'main.html', {'members_list': members_list, ....}) 

然後,在模板中,你可以做一個雙循環:

{% for members in members_list %} 
    {% for each in members %} 
    <tr><td style="border:1px solid black; height: 50px;">{{ each.slidertxt }}<br></td></tr> 
    {% endfor %} 
{% endfor %} 
+0

還有什麼想法?任何解決方案?! – niloofar

+0

你試過我的回答嗎?它有用嗎?我不確定你爲什麼想要另一個想法。 – Alasdair

+0

是的,我做了,但沒有奏效。我所說的代碼位於main.html中,位於for循環中。 – niloofar

相關問題