Django:模板和对di的迭代

2024-05-14 15:10:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个口述:

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

在我的模板中,我想遍历这个dict并用html显示值。所以我把这封口述从视图中发送出去:

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

在tournament.html中,我试图遍历一些单词。我想得到如下输出:

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

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

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

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

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


Tags: inbr模板forhtmlrangesomedict
1条回答
网友
1楼 · 发布于 2024-05-14 15:10:35

不应该:

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

是:

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

否则您试图访问一些不存在的磁盘[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 %}

相关问题 更多 >

    热门问题