Python django模板中的元组列表
我的视图中有一个标签列表和一个值列表,其中第一个列表中的第n个元素对应于第二个列表中的第n个元素,我希望在模板、列表或选项卡中按顺序显示它们,例如: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
- 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')
{% for labels, texts in values %}
<ul>
<li> {{labels}} : {{texts}}.</li>
</ul>
{%用于标签,文本值为%}
- {{labels}}:{{text}
使用str.join
:
values = [" : ".join(x) for x in zip(labels,results)]
并将此列表传递给模板
使用justzip
,您需要在模板内进行解压缩:
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
在这种情况下更好。