2017-12-27 21 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

[FlaskでJinja2を使用してネストされたdictアイテムを取得](https://stackoverflow.com/questions/24727977/get-nested-dict-items-using-jinja2-in-flask) – nndi

答えて

1

さて、あなただけのDatabaseQueryのキーを反復処理しています。

ジンジャーはいくつかのエラーを抑制するので、爆発しないのです。

これは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

ヘイを。

dictを使ってPythonを反復すると、キーが得られます。

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

あなたは

1の値

にアクセスするために a[key]を試して与える

編集:

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

ありがとうございました!私はそれを考え出した。

関連する問題