6

我的视图中有一个标签列表和一个值列表,其中第一个列表中的第 n 个元素对应于第二个列表的第 n 个元素,我想在我的模板、列表或选项卡中按顺序显示它们, 例如 :

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

但这会呈现一个页面:

  • ('标签1','文本1')
  • ('标签2','文本2')

我也尝试过使用标签作为键和文本作为值的字典,它呈现得很好,但是由于它是一个字典,所以顺序不受尊重。我想到了其他方法,例如第一行有两个字典,第二行有另一个字典,但是由于我对 python 和 django 模板的了解不够一致,所以我不知道该怎么做。

如果有人可以提供帮助,将不胜感激。

编辑:实际上我在问这个问题后两分钟就找到了答案,但我会留下它以防它可以帮助任何人。在模板中,我刚刚做了:

{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
4

1 回答 1

5

使用str.join

values = [" : ".join(x) for x in zip(labels,results)]

并将此列表传递给模板。

只需zip在模板内进行解包:

values = zip(labels,results)

{% for label, text in values %}
<ul>
<li> {{ label }} : {{ text }}</li>
</ul>
于 2013-07-29T08:22:36.660 回答