2

我有一个字典:

 >>> some_dict
{1: ['String1', 'String2', 'String3','String4' ],
 2: ['String1_2', 'String2_2', 'String3_2', 'String4_2' ],}

在我的模板中,我想遍历这个字典并在 html 中显示值。所以我从视图中发送了这个字典:

return render_to_response('tournament.html', 
        {.....
        'some_dict' : some_dict,
        'some_dict_range' : range(4),
             .....
        })

在锦标赛.html 中,我尝试迭代 some_dict。我想获得应该如下所示的输出:

'String1', 'String2', 'String3','String4'

 {% for iter1 in some_dict_range%}         
{{some_dict.0.iter1}}<br>{% endfor %}

结果,我什么也没得到。但是当我试图在没有迭代器的情况下获得相同的结果时:some_dict.0.0、some_dict.0.1 等我得到了我需要的东西('String1'、'String2'、'String3'、'String4')。当我试图查看“iter1”的值时,我得到了正确的数字:

 {% for iter1 in some_dict_range%}         
{{iter1}}<br>  {% endfor %}

0, 1, 2 ... 为什么这样不行?如果我在设计上错了,它应该是什么样子?我的意思是-迭代这个dict并在html-template中显示值的正确方法是什么?

4

1 回答 1

6

不应该:

{{some_dict.0.iter1}}<br>{% endfor %}

是:

{{some_dict.iter1.0}}<br>{% endfor %}
            ^^^^^^^

否则,您正在尝试访问不存在的 some_dict[0] ...

为避免传入范围(因为我假设您希望按键顺序输出 dict),您可以使用以下命令:

{% for k, v in some_dict.items|sort %}
    Position {{ k }} has a first value of {{ v.0 }} and has:<br>
    {{ v|join:"<br/>" }}
    {% for item in v %}
        {{ item }}
    {% endfor %}
{% endfor %}
于 2012-07-29T11:29:56.777 回答