HTML表格无法正确呈现

时间:2018-05-31 03:11:15

标签: html django templates

我有一个Django视图,它发送一个字典,其内容将在html页面中呈现。

我的字典看起来像这样,

d ={ name : ['damon','stefan','elena'],
      age :  [200,200,25],
      address : ['mystic falls','mystic falls','mystic falls']
      supernatural : ['yes','yes','yes']}

现在我的html表模板看起来像这样,

<table class="table table-striped" border="1" class="dataframe">
    <thead>
     <tr style="text-align: center;">
       {% for i in d %}
       <th>{{ i }}</th>
       {% endfor %}
     </tr>
   </thead>
   <tbody>
     {% for i,j in d.items %}
      <tr style="text-align: center;">
       {% for x in j %}
        <td>{{ x }}</td>
       {% endfor %}
      </tr>
      {% endfor %}
   </tbody>
 </table>

问题:

当渲染完成字典的最后一个值,即[&#39;是&#39;,&#39;是&#39;是&#39;是&#39;]将成为一行。以下是输出的外观,

name     age       address    supernatural
damon    200    mystic falls  
stefan   200    mystic falls  
elena     25    mystic falls  
yes       yes   yes

基本上,最后一列的值都是行。

你能帮我解释一下这是为什么。我上面的html表格代码有什么问题。

2 个答案:

答案 0 :(得分:1)

也许您必须更改数据类型。你的d类型有点奇怪。我建议你把它改成普通对象(两者都可以熟悉python / javascript对象。)如下所示

    d2 = [
        {'name': 'damon', 'age': 200, 'address': 'mystic falls', 'sub': 'yes'},
        {'name': 'stefan', 'age': 200, 'address': 'mystic falls', 'sub': 'yes'},
        {'name': 'elena', 'age': 200, 'address': 'mystic falls', 'sub': 'yes'},
    ]

然后你可以在模板中使用。如下。

<table class="table table-striped" border="1" class="dataframe">
    <thead>
     <tr style="text-align: center;">
       {% for k, v in d2.0.items %}
       <th>{{ k }}</th>
       {% endfor %}
     </tr>
   </thead>
   <tbody>
   {% for x in d2 %}
      <tr style="text-align: center;">
          <td>
              {{ x.name }}
          </td>
          <td>
              {{ x.age }}
          </td>
          <td>
              {{ x.address }}
          </td>
          <td>
              {{ x.sub }}
          </td>
      </tr>
  {% endfor %}
   </tbody>

PS。你可以使用你当前的数据,但它更复杂,更难理解 - 很难将一个人与他们的数据匹配,甚至当某个字段为空时也无法匹配。

答案 1 :(得分:0)

我认为您需要在address:[]

之后写下逗号“,”