Reputation: 21721
I have a dictionary
data = {'sok': [ [1, 10] ], 'sao': [ [1, 10] ],'sok&sao':[ [2,20]] }
How Can I (Loop trough Dictionary ) present My data as (HTML) table to Django template.?? This format that as table
author qty Amount
sok 1 10
sao 1 10
sok&sao 2 20
total
Upvotes: 14
Views: 16576
Reputation: 59299
You can use the dict.items()
method to get the dictionary elements:
<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>
Upvotes: 38
Reputation: 522
In a project im working on now, i have had the same problem, thanks to your replies i've ended up doing something like this and it worked fine:
<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>
Upvotes: 4
Reputation: 254
Unfortunately, django templates do not deal with Python tuples. So it is not legal to use "for author, values" in the template. Instead, you must access tuple or array values by their index by using ".index", as in "tuple.0" and "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>
Upvotes: 6