如何遍历python模板中的dict值
Posted
技术标签:
【中文标题】如何遍历python模板中的dict值【英文标题】:How to loop through a dic value in python template 【发布时间】:2018-03-16 03:07:28 【问题描述】:我是 Python/Django 开发的新手,我想遍历我从模板视图中发送的 dic 值,但我无法基于索引/键获取值。请帮帮我。
我的观点
def contact(request):
contactDetails =
'name': ['Adeola Ajayi', 'Olayemi'],
'email': ['a@gmail.com', 'b@gmail.com']
return render(request, 'PythonWeb/contact.html',
'contactDetails':contactDetails)
我的模板
% block content %
<br><br>
% for contact in contactDetails%
<p> name: contact.name </p>
<p> name: contact.email </p>
% endfor %
% endblock %
这就是我希望我的模板显示的方式
name: Adeola Ajayi
email: a@gmail.com
name: Olayemi
email: b@gmail.com
【问题讨论】:
检查这个。 ***.com/questions/8018973/… 您可以选择更改contactDetails 的结构吗?而不是包含列表的字典(在您的情况下,名称是两个元素的列表,电子邮件是两个元素的列表),我会让 contactDetails 成为一个列表,其中每个元素都是一个字典。即而不是 'name': ['name1', 'name2'], email:['email 1', 'email 2'] 我认为这会更容易 ['name':'name1', ' email':'email1','name':'name2', 'email':'email2'] 有意义吗?我没有能力在这里测试代码,但是,如果你这样做,我相信你会从你的模板中得到你想要的结果。 工作正常....谢谢 【参考方案1】:您可以创建一个压缩列表并将其传递给模板,这将是一个更简洁的解决方案,如下所示:-
zipped_list = zip(contactDetails['name'], contactDetails['email'])
并像这样将其传递给模板:-
return render(request, 'PythonWeb/contact.html',
'contactDetails':zipped_list)
并像这样在模板中实现它:-
% block content %
<br><br>
% for name, email in contactDetails%
<p> name: name </p>
<p> name: email </p>
% endfor %
% endblock %
希望对你有帮助!
【讨论】:
以上是关于如何遍历python模板中的dict值的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何使用列表中的键和Python中的空值初始化dict?