阅读Django模板中的Dicts和Lists

时间:2014-05-15 11:00:58

标签: python django

有人可以帮我用django模板系统。这是我在视图中的设置:

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)

我想在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

但是我在从django模板中读取数据时遇到了问题。我理解起点:

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

然后我被卡住了(

更新

感谢您的帮助。不幸的是还不能投票给答案。

2 个答案:

答案 0 :(得分:2)

嗯,在循环内部values是内部字典。因此,您可以从那里提取所需的值:

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

答案 1 :(得分:0)

试试这个:

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

点符号将按此顺序尝试字典查找,属性查找和列表索引查找。这意味着item.info将成为您的信息文本,item.cats将成为您的值列表。