2017-10-04 97 views
0

我是Python/Django开发的新手,我想通过一个从我的视图发送到我的模板的dic值进行循环,但我无法获取基于索引/键。请帮助我。如何在python模板中循环访问一个dic值

我查看

def contact(request): 

    contactDetails = { 
     'name': ['Adeola Ajayi', 'Olayemi'], 
     'email': ['[email protected]', '[email protected]'] 
    } 

    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: [email protected] 

name: Olayemi 
email: [email protected] 
+0

选中此项。 https://stackoverflow.com/questions/8018973/how-to-iterate-through-dictionary-in-a-dictionary-in-django-template –

+0

你可以选择更改contactDetails的结构吗?而不是一个包含列表的字典(在你的情况下,name是两个元素的列表,email是两个元素的列表)我会使contactDetails列出一个列表,其中每个元素是一个字典。即,而不是{'name':['name1','name2'],email:['email 1','email 2']}我认为这会更容易,因为[{'name':'name1','电子邮件':'email1'},{'name':'name2','email':'email2'}]有意义吗?我没有能力在这里测试代码,但如果你这样做,我相信你会从你的模板中得到你想要的结果。 – Ben

+0

Works fine ....谢谢 –

回答

0

您可以创建一个压缩的列表,并把它传递给模板这将是一个更清洁的解决方案,如下所示: -

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 %} 

我希望它能帮助!

+0

哇...工作就像一个魔术!!!!!非常感谢,非常感谢 –

相关问题