我的视图中有一个标签列表和一个值列表,其中第一个列表中的第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>
但这会呈现一个页面:
我还尝试过将字符串作为键和文本作为值的字典,它渲染得很好,但是由于它是一个字典,因此订单不受尊重。我已经想到了其他方法,例如第一行有两个词典,第二行有另一个词典,但是我对python和django模板的了解不够,我不知道怎么做。
如果有人可以提供帮助,我们将不胜感激。
编辑:实际上我在问这个问题之后找到了两个小时的答案,但我会留下来以防它可以帮助任何人。在模板中,我刚刚做了:{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
答案 0 :(得分:4)
使用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>