我一直在尝试在运行时是否有从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)