2016-07-18 5 views
-1

Мой списокДисплей словаря в Джанго

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

Объяснить что? Словари неупорядочены, и это не имеет никакого отношения к Django. –

+0

Возможный дубликат http://stackoverflow.com/questions/1867861/python-dictionary-keep-keys-values-in-same-order-as-declared –

+0

@ DanielRoseman Он использует шаблонные структуры Django, но вот об этом – jape

ответ

0
{% for dict in details %} 
       <tr> 
        <td>{{dict.s_no}}</td> 
        <td>{{dict.book_name}}</td> 
        <td>{{dict.author}}</td> 

       </tr> 

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

    Это решение имеет дополнительное преимущество, поскольку его легко модифицировать, если позже вы решите, что хотите вывести эти значения в другом порядке.

+0

Я пробовал ваш метод, я получаю эту ошибку. Не удалось проанализировать остаток: '[' s_no ',' book_name ',' author ']' from '[' s_no ',' book_name ',' author ']' –

+0

{% for dict in details%} {{}} dict.s_no {{}} dict.book_name {{}} dict.author {% ENDFOR%} Это работало для меня. –