【问题标题】:Django: templates and iterate over dictDjango:模板和迭代字典
【发布时间】:2012-07-27 08:58:17
【问题描述】:

我有一个字典:

 >>> 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 中显示值的正确方法是什么?

【问题讨论】:

    标签: python html django django-templates django-views


    【解决方案1】:

    不应该:

    {{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 %}
    

    【讨论】:

    • 我是对的 - some_dict.0.iter1。当我尝试迭代“some_dict.0.1”、“some_dict.0.2”等时 - 我得到了我的价值观
    • 如果你使用 some_dict.0.X 访问,你的字典必须有“0”作为键,因为如果没有,你应该得到一个 KeyError 引发。你的例子正确吗? @JonClements 是对的,如果您不相信我们,请查看 this...
    • 是的,这是我的错误——我有一个键'0',而不是'1'。感谢@JonClements,他的解决方案非常完美
    • 我又错了——解决方案并不完美。如果我想遍历“{{ v.0 }}”怎么办。我的意思是我想 {{v.x}} 其中 x - 是迭代器。当我尝试 {% for x in z%} {{v.x}} {% endfor %} - 我什么也没得到。 (例如,z 是一个范围(4))
    • 谢谢,这是我要搜索的
    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2013-04-30
    • 2015-09-28
    相关资源
    最近更新 更多