使用字典将值打印到HTML表可创建空表

时间:2019-06-15 19:04:38

标签: django python-3.x jinja2

我正在尝试使用字典词典在网页中呈现表格。看起来很简单,但是到目前为止我还没有成功。

到目前为止,我已经尝试了以下代码:
模板:

<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的新手。

1 个答案:

答案 0 :(得分:2)

您应该将联系人作为根上下文词典传递,因为这意味着您现在在模板中构造了webum@cryptonet.topzojisopeyu@crypto-net.club之类的变量。

您应该做的是将其包装在以contacts为键的字典中,例如:

return render(request, 'maintainer/mcontact.html',{'contacts': contacts})

现在,我们将在模板中创建一个名为contacts的变量,然后您可以遍历该词典的各项。

请注意,Django 不知道您传递给render(..)调用的变量的名称。实际上,如果您使用像这样的字典文字,那么甚至没有变量,它只是一个表达式。 render(..) [Django-doc]仅包含以下内容:

  

context

     

包含要添加到模板上下文中的值的字典。默认情况下,   这是一本空字典。如果字典中的值是可调用的,   视图将在渲染模板之前调用它。

因此,该词典中各项的关键字是变量的名称,而值是将绑定到这些模板变量的相应值。