2016-03-30 16 views
2

を使用して、ネストされた辞書へのアクセスだから私は、辞書のリストを持っている:はJinja2のテンプレートの

mylist = [{'Score': 33, u'interfaces': [{u'ip_addresses': [{u'value': u'172.16.153.71', }]}]}] 

私はJinja2のを使用して「の値」キーにアクセスしたいです。

しかし、私はちょうどそれのための構文を取得するように見えることはできません。私はそれがおそらくお互いの内部のループのために3つだろう知っているが、私はそれを正しく得ることはできません。

私は次のようにPythonでそれを行うことができます。そのため、おそらくこのような何かが

  {% for obj in mylist %} 
       {%for obj2 in obj %} 
       {for obj3 in obj2 %} 
        {{ obj3.value }}", 
       {% endfor % } 
       {% endfor % } 
      {% endfor % } 

を?:しかし、それは明らかに動作しません

for i in mylist: 
    for x in i['interfaces']: 
    for y in x['ip_addresses']: 
     print y["value"] 

。どんな助けでも大歓迎です。ありがとう。

+1

テンプレートをどのように呼び出していますか?あなたの変数は 'mylist'と呼ばれますが、それはあなたのテンプレートのどこにも現れません。 – larsks

+0

ああ申し訳ありません。私はこの投稿の名前を変更しました。もっと理にかなって編集します。 –

答えて

2

PythonループとJinjaループを比較しましょう。外側のPythonのループは次のとおりです。

for i in mylist: 

を、対応する神社ループがある:正常に見える

{% for obj in mylist %} 

。あなたの次のPythonのループは次のようになりながら、しかし:

for x in i['interfaces']: 

ご対応神社ループは次のとおりです。

明らかに同じことをやっていない
{%for obj2 in obj %} 

。そして、あなたが既にPythonループのロジックを持っているので、なぜこの変更を行ったのかは明らかではありません。同等のループは次のようになります。

{% for obj2 in obj.interfaces %} 

または:

{% for obj2 in obj['interfaces'] %} 

...もっと密接にはPythonと一致しますが、神社にはあまり慣用的です。次のネストループでも同じ問題が発生します。

Pythonロジックに従うだけでJInternalループを書き直す場合は、すべて設定する必要があります。

関連する問題