2009-10-09 23 views
13

tengo un diccionarioPresentar datos del diccionario python a la plantilla django.

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

¿Cómo puedo (Diccionario través Loop) presentar Mis datos como tabla (HTML) para plantillas de Django. ?? Este formato que como mesa

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

Respuesta

37

Usted puede utilizar el método dict.items() para obtener los elementos del diccionario:

<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

valores [0] no funciona – kn3l

+2

values.0 ...... –

+1

Editado en respuesta para la posteridad. –

6

Por desgracia, las plantillas de Django no tratar con tuplas de Python. Por lo tanto, no es legal usar "para autor, valores" en la plantilla. En su lugar, debe acceder a los valores de tupla o matriz por su índice usando ".index", como en "tuple.0" y "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

En un proyecto im trabajando ahora, he tenido el mismo problema, gracias a sus respuestas he terminado haciendo algo como esto y funcionó bien:

<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> 
Cuestiones relacionadas