我有一个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表格代码有什么问题。
答案 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:[]