tree em
tree em

Reputation: 21721

Present data from python dictionary to django template.?

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

Answers (3)

notnoop
notnoop

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

Santiago
Santiago

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

Brian H
Brian H

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

Related Questions