我有一个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>问题:
当渲染完成时,字典的最后一个值,即'yes','yes','yes‘是一行。下面是输出的样子,
name age address supernatural
damon 200 mystic falls
stefan 200 mystic falls
elena 25 mystic falls
yes yes yes基本上,最后一列的值是以行的形式出现的。
你能告诉我为什么会这样吗?上面的html表格代码有什么问题吗?
发布于 2018-05-31 12:52:25
也许你必须改变你的数据类型。你的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'},
]然后你就可以在模板中使用forloop了。如下所示。
<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。你可以使用你当前的数据,但它更复杂,真的很难理解-很难将一个人与他们的数据相匹配,甚至当某些字段为空时也无法匹配。
发布于 2018-05-31 11:34:40
我认为你需要在address:[]后面加上逗号“,”
https://stackoverflow.com/questions/50616094
复制相似问题