Python django模板中的元组列表

Python django模板中的元组列表,python,django,django-templates,tuples,Python,Django,Django Templates,Tuples,我的视图中有一个标签列表和一个值列表,其中第一个列表中的第n个元素对应于第二个列表中的第n个元素,我希望在模板、列表或选项卡中按顺序显示它们,例如: - label1 : text1 - label2 : text2 .. 为此,我压缩了两个列表: labels = [] texts = [] #function that fills the lists. values = zip(labels,results) context = {'values': values } return

我的视图中有一个标签列表和一个值列表,其中第一个列表中的第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>
{%表示值中的值%}
  • {{value}}
但这会使页面显示以下内容:

  • ('label1','text1')
  • ('label2','text2')
我也尝试过使用标签作为键,文本作为值的字典,它呈现的很好,但是由于它是一个dict,所以顺序没有得到尊重。我已经想到了其他方法,比如第一行有两个字典,第二行有另一个字典,但是,由于我对python和django模板的了解不够一致,我不知道如何做到这一点

如果有人能帮忙,我将不胜感激

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

{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
{%用于标签,文本值为%}
  • {{labels}}:{{text}

使用
str.join

values = [" : ".join(x) for x in zip(labels,results)]
并将此列表传递给模板

使用just
zip
,您需要在模板内进行解压缩:

values = zip(labels,results)

{% for label, text in values %}
<ul>
<li> {{ label }} : {{ text }}</li>
</ul>
values=zip(标签、结果)
{%用于标签,文本值为%}
  • {{label}}:{{text}

太快了谢谢你,我编辑了我的问题,因为我在看到你的问题之前找到了答案,但是你认为我应该保持这种方式还是使用str.join来代替?@saram这取决于,如果你在不同的模板中使用相同的列表(或者在同一模板中多次),那么最好将这种逻辑保持在一个地方(在带有str.join的视图文件中),因为例如,如果您需要将
更改为其他内容,那么您必须在多个位置进行更改,但使用
str.join
内部视图文件,您只需要在一个位置进行更改。但是,如果您只对其进行一次更改,则您的方法没有问题。@sarahm如果您正在压缩两个以上的文件,也可以进行更改物品(
zip(foo,bar,spam,eggs)
)那么太多的拆包看起来会很难看,
str.join
在这种情况下更好。