在Django中显示字典

时间:2016-07-18 18:26:22

标签: python django dictionary

我的清单

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的新手,请指导。

2 个答案:

答案 0 :(得分:0)

现在你正在迭代字典中的每个键值对,所以你的代码按照它们存储在字典中的顺序输出字典值,恰好是:

Author Book_name S_no

所以,你有两个选择。

  1. 更改字典中存储这些属性的顺序。如果您将字典的结构从{'author': 'abc', 'book_name':'xyz','s_no':1}更改为{'s_no':1, 'book_name':'xyz', 'author': 'abc'},则迭代键值对将按所需顺序返回这些属性。但是,这不是一个非常灵活的解决方案,所以我建议第二个选择。

  2. 更改输出字典值的方式。您可以明确定义所需的顺序,而不是按照它们恰好处于的顺序迭代所有键值对。通过更改以下内容输出字典值:

    {% 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%}