解决python词典并使用Jinja迭代它们

时间:2017-12-27 15:27:58

标签: python loops dictionary for-loop jinja2

我有一个看起来像这样的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'}}

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

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

我看过这个list of dictionary in jinja template,但没有运气。

谢谢!

3 个答案:

答案 0 :(得分:1)

嗯,你只需要遍历databaseQuery的密钥。

Jinja抑制了一些错误,这就是为什么它不会为你爆炸。

这不是金贾问题,而是一个蟒蛇问题;如果你在没有指定键,值或项的情况下遍历字典,它只会循环遍历键,对于你是0和1只是整数。

如果您只想访问这些值,可以执行

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

应该得到你想要的东西。值得注意的是,除非那些整数(0和1)将被用于有意义的事情,你可以直接传递字典列表并像你那样循环,这样就可以了。

答案 1 :(得分:0)

迭代dict仅生成密钥。你可以这样做:

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

或者:

{% for k, v in databaseQuery.items() %}
    {{ v['name'] }}
{% endfor %}

答案 2 :(得分:0)

Hei;

使用python迭代dict为你提供密钥。

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

会给你1个

尝试a[key]访问值

编辑:

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