2009-10-09 11 views
13

Mam słownikPrezentuj dane ze słownika Pythona do szablonu django.?

data = {'sok': [ [1, 10] ], 'sao': [ [1, 10] ],'sok&sao':[ [2,20]] } 

jak mogę (Loop koryta słownik) przedstawić moje dane jako (HTML) tabeli Django szablonu. ?? Format ten, który jako tabeli

author  qty   Amount 
sok   1    10   
sao   1    10   
sok&sao  2    20 
total    

Odpowiedz

37

Można użyć metody dict.items() uzyskać słownikowe elementy:

<table> 
    <tr> 
     <td>author</td> 
     <td>qty</td> 
     <td>Amount</td> 
    </tr> 

    {% for author, values in data.items %} 
    <tr> 
     <td>{{author}}</td> 
     {% for v in values.0 %} 
     <td>{{v}}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 
+0

wartości [0] nie działa – kn3l

+2

values.0 ...... –

+1

Edytowane w odpowiedzi dla potomności. –

6

Niestety, szablony Django nie radzą sobie z krotek Python. Dlatego nie jest dozwolone używanie w szablonie "dla autora, wartości". Zamiast tego musisz uzyskać dostęp do wartości krotek lub tablic według ich indeksu za pomocą ".index", jak w "tuple.0" i "tuple.1".

<table> 
    <tr> 
     <td>author</td> 
     <td>qty</td> 
     <td>Amount</td> 
    </tr> 

    {% for entry in data.items %} 
    <tr> 
     <td>{{entry.0}}</td> 
     {% for v in entry.1 %} 
     <td>{{v}}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 
4

W im projektem pracuje teraz, miałem ten sam problem, dzięki swoimi odpowiedziami, w jakim zakończyła się robi coś takiego i to działało w porządku:

<table border=1 cellpadding=1 cellspacing=1> 
<tr> 
    <td>author</td> 
    <td>qty</td> 
    <td>Amount</td> 
</tr> 
{% for k,v in resultado.iteritems %} 
    <tr><td> {{ k }} </td><td>{{ v[0] }}</td><td> {{ v[1] }} </td></tr> 
{% endfor %} 
</table> 
Powiązane problemy