Question

Could someone please help me with django template system. This is my setup in views:

html_vars = {
             'some_var1': 'some_val1',
             'some_var2': 'some_val2',
             'cat': {
                     't_cat21' : { 'cats': ['val21_1', 'val21_2', 'val21_3'], 'info': 'text21' },
                     't_cat22' : { 'cats': ['val22_1', 'val22_2', 'val22_3'], 'info': 'text22' },
                     't_cat23' : { 'cats': ['val23_1', 'val23_2', 'val23_3'], 'info': 'text23' },
                    },
            }

def home(request):
    render_to_response('home.html', html_vars)

I want to get this result in html:

t_cat21 (text21) - val21_1, val21_2, val21_3
t_cat22 (text22) - val22_1, val22_2, val22_3
t_cat23 (text23) - val23_1, val23_2, val23_3

But I'am having problems at reading data from django template. I understand the starting point:

{% for category, values in cat.items %}
  {{ category }}
  ???
{% endfor %}

And then I'm stuck (

UPDATE

Thanks for help. Unfortunately cannot vote the answer yet.

Was it helpful?

Solution

Well, inside the loop values is the inner dict. So you can extract the values you need from there:

{{ category }} ({{ values.info }}) - {{ values.cats|join:", " }}

OTHER TIPS

Try this:

{% for category, item in cat.items %}
    {{ category }} ({{ item.info }}) - {% for val in item.cats %}{{ val }} {% endfor %}
{% endfor %}

The dot notation will, in this order, try a dictionary lookup, an attribute lookup and a list-index lookup. That means item.info will be your info text, and item.cats will be your list of values.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top