Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Template: Nested Dictionary "for" tag inside of List "for" tag

I'd like to be able to iterate over a dictionary while inside of a for loop in a Django template.

For the sake of this sample, consider the following:

items_list = [ {'key1':'value1', 'key2':'value2'}, {'key1':'value5', 'key2':'value9'} ]

Method #1:

{% for dict in items_list %}
    {% for key,value in dict %}
        <tr>
            <td>{{ key }}</td>
            <td>{{ value }}</td>
        </tr>
    {% endfor %}
{% endfor %}

Method #2:

{% for dict in items_list %}
    {% for node in dict.items %}
        <tr>
            <td>{{ node.0 }}</td>
            <td>{{ node.1 }}</td>
        </tr>
    {% endfor %}
{% endfor %}

Questions

  • Why does Method #1 not work? That seems intuitive to me.
  • Is the way I'm doing it in Method #2 ok or will that cause problems later on?
like image 641
T. Stone Avatar asked Jul 23 '09 23:07

T. Stone


1 Answers

The .items property should be used in method 1. Try this:

{% for key,value in dict.items %}

dict.items() returns a list of key value pairs. But just dict is a dictionary object. http://docs.python.org/library/stdtypes.html#dict.items

like image 103
Robert Avatar answered Sep 22 '22 19:09

Robert