4
我有我的視圖中的標籤列表和值列表,其中第一個列表中的第n個元素對應於第二個列表中的第n個元素,我想按順序顯示它們我的模板,在列表或一個選項卡,例如:django模板中的元組列表
- label1 : text1
- label2 : text2 ..
要做到這一點,我拉上了兩個列表:
labels = []
texts = []
#function that fills the lists.
values = zip(labels,results)
context = {'values': values }
return render(request,'mypage.html',context)
然後在我的模板,我已經試過這樣:
{% for value in values %}
<ul>
<li> {{value}}.</li>
</ul>
但這渲染頁面:
- ( 'label1的', '文本1')
- ( '標籤2', '文本2')
我也試過有字典與標籤作爲鍵和文本作爲價值,它呈現很好,但然後順序是不尊重,因爲它是一個字典。我想到了其他的做法,比如第一行有兩個字典,第二行有另外一個字典,但是由於我在python和django的模板方面的知識不夠一致,我不知道該怎麼做。
如果有人可以幫忙,將不勝感激。
編輯:其實我問這個問題後找到了答案兩個minuts,但我會留下它,以防它可以幫助任何人。在模板中,我只是做:
{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
這是快謝謝你,我編輯我的問題,因爲我找到了答案之前,我看到了你,但你認爲我應該保持這樣或者使用str.join代替? – sarahm
@sarahm,保持你的 – eri
@sarahm這取決於,如果你在不同的模板中使用相同的列表(或在同一個模板中多次使用),那麼最好將這樣的邏輯保存在一個地方(在str.join的視圖文件中),因爲例如,如果你需要將':'改成別的東西,那麼你必須在多個地方改變它,但在視圖文件中使用'str.join',你只需要在一個地方改變它。但是,如果你只做了一次,那麼你的方法沒有任何問題。 –