我有一个标签列表和我的视图中的值列表,其中第一个列表中的第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>
但这会呈现一个页面:
>(‘label1′,’text1’)
>(‘label2′,’text2’)
我还尝试了一个字典,标签作为键和文本作为值,它呈现良好,但然后订单不受尊重,因为它是一个字典.我已经想到了其他方法,例如第一行有两个词典,第二行有另一个词典,但是我对python和django模板的了解不够,我不知道怎么做.
如果有人可以提供帮助,我将不胜感激.
编辑:实际上我在问这个问题之后找到了两个小时的答案,但我会留下它以防它可以帮助任何人.在模板中,我刚刚做了:
{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
解决方法:
使用str.join:
values = [" : ".join(x) for x in zip(labels,results)]
并将此列表传递给模板.
只需拉链,您需要在模板内部进行解压缩:
values = zip(labels,results)
{% for label, text in values %}
<ul>
<li> {{ label }} : {{ text }}</li>
</ul>