Reputation: 2935
So, I get this JSON from Django:
{'something' :
{'value':'somethingName','editable':'false'}
},
{'somethingElse':
{'value':'somethingElseName','editable':'true'}
}
And show it like this:
{% for key, value in obj.items %}
{{ key }} : {{ value }}
{% endfor %}
The problem is {{ value }}
returns {'value':'somethingName','editable':'false'}
, and I can't access value
or editable
trough {{ value.value }}
or {{ value.editable }}
.
I'd like to show {{ value.value }}
as somethingName
instead of the entire JSON.
Is there a way to access 'sub-level' JSON trough Django itself?
Upvotes: 1
Views: 145
Reputation: 473873
You cannot use template variable name as a dictionary key using the .
notation. The second value
in value.value
is not interpreted as a string value
because you have a variable name value
in the loop.
Just rename key
and value
to obj_key
and obj_value
respectively:
{% for obj_key, obj_value in obj.items %}
{{ obj_key }} : {{ obj_value.value }}
{% endfor %}
Demo:
>>> from django.template import Context, Template
>>> t = Template("""
... {% for obj_key, obj_value in obj.items %}
... {{ obj_key }} : {{ obj_value.value }}
... {% endfor %}""")
>>> obj = {'something' : {'value':'somethingName','editable':'false'}}
>>> t.render(Context({'obj': obj}))
u'something : somethingName'
Hope that helps.
Upvotes: 1