我的清单
book_details = [
{'author':'abc', 'book_name':'xyz', 's_no':1},
{'author':'efg', 'book_name':'ijk', 's_no':2}
]
我的代码:
{% for dict in details %}
<tr>
{% for key, value in dict.items %}
<td>{{ value }}</td>
{% endfor %}
</tr>
{% endfor %}
输出:
Author Book_name S_no
期望的输出:
S_no Book_name Author
我是django的新手,请指导。
答案 0 :(得分:0)
现在你正在迭代字典中的每个键值对,所以你的代码按照它们存储在字典中的顺序输出字典值,恰好是:
Author Book_name S_no
所以,你有两个选择。
更改字典中存储这些属性的顺序。如果您将字典的结构从{'author': 'abc', 'book_name':'xyz','s_no':1}
更改为{'s_no':1, 'book_name':'xyz', 'author': 'abc'}
,则迭代键值对将按所需顺序返回这些属性。但是,这不是一个非常灵活的解决方案,所以我建议第二个选择。
更改输出字典值的方式。您可以明确定义所需的顺序,而不是按照它们恰好处于的顺序迭代所有键值对。通过更改以下内容输出字典值:
{% for key,value in dict.items %}
<td>{{value}}</td>
{% endfor %}
到此:
{% for key in ['S_no', 'Book_name', 'Author'] %}
<td>{{dict[key]}}</td>
{% end for %}
如果您以后决定要以其他顺序输出这些值,此解决方案还有一个非常容易修改的好处。
答案 1 :(得分:0)
{% for dict in details %}
<tr>
<td>{{dict.s_no}}</td>
<td>{{dict.book_name}}</td>
<td>{{dict.author}}</td>
</tr>
{% endfor%}