将变量从Python传递到Jinja2模板

时间:2019-05-15 08:22:33

标签: python jinja2

我一直在尝试在运行时是否有从python到Jinja Template的sendin变量的方法。不使用任何模板,例如Flask或Django,只是简单地模板化。

{%- for vlans,descr in router.site.sitename.corerouter.vlan.items()  %}
    !
    int x
      shutdown
    !
{% endfor %}

让我们说,如果我想将我的python运行时中的站点名称和corerouter填充到Jinja2中,这可能吗?

截至目前,我们正在手动编码site1和core1,但我希望它可以从用户输入或程序中获取。


class Gen_Config:

    def __init__(self, attribute_yaml=None, template_jinja=None, site_name = None, core_router = None):
        self.attribute_yaml = attribute_yaml
        self.template_jinja = template_jinja
        self.site_name = site_name
        self.core_router = core_router

    def create_config(self):

        with open(self.attribute_yaml, 'r') as stream:
            yaml_data = yaml.safe_load(stream)

        with open(self.template_jinja, 'r') as jinjafile:
            jinja_data = jinjafile.read()
            template = Template(jinja_data)

#Tried giving variables to Render template, it wont work
        config = template.render(yaml_data, sitename=self.site_name, core_router=self.core_router)
        print(config)

0 个答案:

没有答案