使用 Jinja2 模板访问嵌套字典
Accessing nested dictionary using Jinja2 templating
所以我有这个字典列表:
mylist = [{'Score': 33, u'interfaces': [{u'ip_addresses': [{u'value': u'172.16.153.71', }]}]}]
我想使用 jinja2 访问 'value' 键。
但是,我似乎无法找到适合它的语法。我知道它可能是三个 for 循环,但我做对了。
我可以在 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 % }
但这显然行不通。任何帮助将不胜感激。谢谢
让我们将您的 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 逻辑,您应该已经准备就绪。
所以我有这个字典列表:
mylist = [{'Score': 33, u'interfaces': [{u'ip_addresses': [{u'value': u'172.16.153.71', }]}]}]
我想使用 jinja2 访问 'value' 键。
但是,我似乎无法找到适合它的语法。我知道它可能是三个 for 循环,但我做对了。
我可以在 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 % }
但这显然行不通。任何帮助将不胜感激。谢谢
让我们将您的 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 逻辑,您应该已经准备就绪。