如何遍历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中如何以dict的key排序输出?

Django模板遍历字典的方法

python - 如何使用列表中的键和Python中的空值初始化dict?

捋一捋Python中的Dict(下)

如何从 Python 中的“dict”对象列表中基于键提取值

如何从Python中列表的dict中的值生成所有组合