我正在尝试使用字典词典在网页中呈现表格。看起来很简单,但是到目前为止我还没有成功。
到目前为止,我已经尝试了以下代码:
模板:
<table>
<thead>
<tr>
<th>Email</th>
<th>Name</th>
<th>Workplace</th>
<th>Contact Number</th>
<th>User type</th>
</tr>
</thead>
<tbody>
{% for key,value in contacts.items %}
<tr>
<td>{{ key }}</td>
<td>{{ value.name }}</td>
<td>{{ value.workplace }}</td>
<td>{{ value.contact }}</td>
<td>{{ value.user_type }}</td>
</tr>
{% endfor %}
</tbody>
</table>
我的contacts
的格式如下:
{
'webum@cryptonet.top': {'workplace': 'SRK Films', 'user_type': 'company', 'name': 'SRK', 'contact': '-'},
'zojisopeyu@crypto-net.club': {'user_type': 'campus', 'workplace': 'bchjb', 'contact': '1478529631', 'name': 'Pry'}
}
我通过以下方式将变量发送到模板:
return render(request, 'maintainer/mcontact.html',contacts)
我得到的只是我明确编写的标头单元格。表的其余数据为空。它显示“表中无可用数据”消息。我正在将contacts
打印到stderr,所以我知道该变量具有正确的值。我还有其他东西吗?我不知道该怎么办。感谢您的帮助,因为我是Django的新手。
答案 0 :(得分:2)
您应该不将联系人作为根上下文词典传递,因为这意味着您现在在模板中构造了webum@cryptonet.top
和zojisopeyu@crypto-net.club
之类的变量。
您应该做的是将其包装在以contacts
为键的字典中,例如:
return render(request, 'maintainer/mcontact.html',{'contacts': contacts})
现在,我们将在模板中创建一个名为contacts
的变量,然后您可以遍历该词典的各项。
请注意,Django 不不知道您传递给render(..)
调用的变量的名称。实际上,如果您使用像这样的字典文字,那么甚至没有变量,它只是一个表达式。 render(..)
[Django-doc]仅包含以下内容:
context
包含要添加到模板上下文中的值的字典。默认情况下, 这是一本空字典。如果字典中的值是可调用的, 视图将在渲染模板之前调用它。
因此,该词典中各项的关键字是变量的名称,而值是将绑定到这些模板变量的相应值。