使用 jinja2 模板提取嵌套字典
extracting nested dictionaries with jinja2 templates
我有这个带有嵌套字典的代码,我需要将它放入 jinja2 模板中,但运气不佳...
from jinja2 import Template
vlans = {"1": {"description": "default", "name": "default", "IP": {"IP1": "10.0.0.1", "IP2": "20.0.0.2"}}}
vlan_template = Template('''
{% for key,value in vlans.items() %}
#
vlan {{ key }}
description {{ value.description }}
name {{ value.name }}
{% if value == "IP"%}
{% for subkey,subvalue in value["IP"].items() %}
ip address {{ subvalue.IP1 }}
ip address {{ subvalue.IP2 }} secondary
{% endfor %}
{% endif %}
#
{% endfor %}
''')
print(vlan_template.render(vlans = vlans))
我正在尝试获得以下输出
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2 secondary
#
谢谢,
马吕斯.
我已经找到了这段代码
from jinja2 import Template
vlans = {"1": {"description": "default", "name": "default", "IP": {"IP1": "10.0.0.1", "IP2": "20.0.0.2"}}}
vlan_template = Template('''
{%- for key,value in vlans.items() %}
{%- for k,v in value.items() %}
#
vlan {{ key }}
description {{ value.description }}
name {{ value.name }}
ip address {{ v.IP1 }}
ip address {{ v.IP2 }}
#
{%- endfor %}
{%- endfor %}
''')
print(vlan_template.render(vlans = vlans))
这给了我 3 次信息,但只有第 3 次是正确的
#
vlan 1
description default
name default
ip address
ip address
#
#
vlan 1
description default
name default
ip address
ip address
#
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2
#
问题是我只想打印
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2
#
我有这个带有嵌套字典的代码,我需要将它放入 jinja2 模板中,但运气不佳...
from jinja2 import Template
vlans = {"1": {"description": "default", "name": "default", "IP": {"IP1": "10.0.0.1", "IP2": "20.0.0.2"}}}
vlan_template = Template('''
{% for key,value in vlans.items() %}
#
vlan {{ key }}
description {{ value.description }}
name {{ value.name }}
{% if value == "IP"%}
{% for subkey,subvalue in value["IP"].items() %}
ip address {{ subvalue.IP1 }}
ip address {{ subvalue.IP2 }} secondary
{% endfor %}
{% endif %}
#
{% endfor %}
''')
print(vlan_template.render(vlans = vlans))
我正在尝试获得以下输出
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2 secondary
#
谢谢, 马吕斯.
我已经找到了这段代码
from jinja2 import Template
vlans = {"1": {"description": "default", "name": "default", "IP": {"IP1": "10.0.0.1", "IP2": "20.0.0.2"}}}
vlan_template = Template('''
{%- for key,value in vlans.items() %}
{%- for k,v in value.items() %}
#
vlan {{ key }}
description {{ value.description }}
name {{ value.name }}
ip address {{ v.IP1 }}
ip address {{ v.IP2 }}
#
{%- endfor %}
{%- endfor %}
''')
print(vlan_template.render(vlans = vlans))
这给了我 3 次信息,但只有第 3 次是正确的
#
vlan 1
description default
name default
ip address
ip address
#
#
vlan 1
description default
name default
ip address
ip address
#
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2
#
问题是我只想打印
#
vlan 1
description default
name default
ip address 10.0.0.1
ip address 20.0.0.2
#