使用Jinja2模板访问嵌套字典

时间:2016-03-30 15:42:10

标签: python dictionary jinja2

所以我有这个词典列表:

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

我想使用jinja2访问'value'键。

但是,我似乎无法获得正确的语法。我知道它们可能是三个相互之间的循环,但我无法做到正确。

我可以在python中这样做:

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

所以也许这样的事情?:

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

但这显然不起作用。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

让我们将你的Python循环与你的Jinja循环进行比较。外部Python循环是:

for i in mylist:

相应的Jinja循环是:

{% for obj in mylist %}

看起来很好。但是,当您的下一个Python循环看起来像:

for x in i['interfaces']:

你对应的Jinja循环是:

{%for obj2 in obj %}

这显然没有做同样的事情;既然你已经掌握了Python循环中的逻辑,那么为什么你做出这个改变并不清楚。等效循环将是:

{% for obj2 in obj.interfaces %}

或者:

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

...更接近于Python,但对Jinja来说不那么惯用。您对下一个嵌套循环有同样的问题。

如果您重写JInja循环以简单地遵循Python逻辑,那么您应该全部设置。