代码之家  ›  专栏  ›  技术社区  ›  LewisCallaway

python字典和使用Jinja迭代它们的问题

  •  0
  • LewisCallaway  · 技术社区  · 7 年前

    我有一本类似这样的Python字典。 {0: {'record': u'running fast', 'moreInfo': u'test', 'year': u'2017', 'name': u'Jose la computadora', 'activity': u'Cross Country'}, 1: {'record': u'test', 'moreInfo': u'ttt', 'year': u'2000', 'name': u'Lewdog', 'activity': u'Cross Country'}}

    我正在用烧瓶将其传递给Jinja模板。字典设置为变量databaseQuery并传递给Jinja。 我的jinja代码看起来像这样,但页面上没有显示任何内容。 如果我在页面上打印databaseQuery,我会得到整个字典,如果我打印test,我只会得到 0 1 . 我试图找出如何遍历字典并在页面上显示名称的每个值。

    {% for test in databaseQuery %}
    {{test["name"]}}
    {% endfor %}
    

    我已经看过了 list of dictionary in jinja template 但没有任何运气。

    谢谢

    3 回复  |  直到 7 年前
        1
  •  1
  •   mclslee    7 年前

    您只是在遍历databaseQuery的键。

    Jinja会抑制一些错误,这就是为什么它不会为您爆发的原因。

    这不是一个Jinja问题,而是python问题;如果在没有指定键、值或项的情况下遍历字典,它只会循环遍历键,对您来说,键是0,1只是整数。

    如果只想访问这些值,可以执行以下操作

    {% for val in databaseQuery.values() %}
        {{ val['name'] }}
    {% endfor %}
    

    应该能得到你想要的。值得注意的是,除非这些整数(0和1)将用于有意义的内容,否则您只需向上传递字典列表,然后像您所做的那样循环使用它,这样就可以了。

        2
  •  0
  •   user2390182    7 年前

    迭代 dict 仅生成关键帧。您可以执行以下操作:

    {% for k in databaseQuery %}
        {{ databaseQuery[k]['name'] }}
    {% endfor %}
    

    或:

    {% for k, v in databaseQuery.items() %}
        {{ v['name'] }}
    {% endfor %}
    
        3
  •  0
  •   v.coder    7 年前

    Hei;

    python在dict上进行迭代将为您提供关键。

    a = {1:'test'}
    for k in a 
    

    将给你1

    尝试 a[key] 访问值

    编辑:

    {% for test in databaseQuery %}         
    {{databaseQuery[test]}}
    {% endfor %}