2017-12-27 478 views
0

我有一個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'}}與python字典和Jinja迭代通過它們的問題

我將它傳遞給帶有Flask的Jinja模板。字典設置爲變量databaseQuery並傳遞給Jinja。 我的忍者代碼看起來像這樣,但沒有顯示在頁面上。 如果我在頁面上打印databaseQuery,我會得到整個字典,如果我打印測試,我只會得到0 1。 我想弄清楚如何遍歷我的字典,並顯示頁面上的名稱的每個值。

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

我看了這list of dictionary in jinja template,但沒有任何運氣。

謝謝!

+0

看看這裏:[使用Jinja2在Flask中獲取嵌套字典項目](https://stackoverflow.com/questions/24727977/get-nested-dict-items-using-jinja2-in-flask) – nndi

回答

1

那麼你只是通過databaseQuery的鑰匙迭代。

Jinja抑制一些錯誤,這就是爲什麼它不會爲你爆炸。

這不是Jinja問題,而是python問題;如果你在沒有指定鍵,值或項的情況下迭代字典,它只會遍歷鍵,這對你來說是0和1,它們只是整數。

如果您要訪問只是值,你可以做

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

應該得到你想要的東西。值得注意的是,除非那些整數(0和1)將被用於有意義的事情,否則你可以放棄字典列表並循環遍歷,就像你做的那樣,那將起作用。

0

迭代dict只產生密鑰。你可以這樣做:

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

或者:

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

喜;

python迭代字典給你的關鍵。

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

會給你1

嘗試a[key]訪問值

編輯:

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