变量用于jinja2的渲染功能

时间:2017-10-12 13:06:48

标签: python jinja2

我有一个XML模板文件,需要使用jinja2,

更新正确的值

例如:

<xyz controller-version="004-002-010-000">
    <abc>
        <name>**var_HR_EXACT_NAME**</name>
        <type>OPERATION</type>
     </abc>
</xyz>

想要更改粗体字母

的变量值

Python代码段:

app_import_dir=/usr/local/app/template
template_file_name=TemplateFileName.xml
temp_template_file=/usr/local/app/template/TemplateFileName.xml
property_variable_name='var_HR_EXACT_NAME'
property_variable='This is the new value'

env=jinja2.Environment(loader=jinja2.FileSystemLoader(app_import_dir))
raw_template=env.get_template(template_file_name)
final_template=raw_template.render( **property_variable_name** = **property_variable** )

with open(temp_template_file, 'w') as f:
    f.write(final_template)

注意:我在render函数中使用了两个变量,并将该变量替换为null

但是当我在渲染中使用exect字符串时它工作正常。有人可以帮我找到解决方案,请

1 个答案:

答案 0 :(得分:0)

  

<强>答案:

看起来我们不应该在循环中使用render,因此使用字典进行了我的python脚本。 添加字典中的所有变量,并使用下面的一个镜头替换它,它按预期工作。

代码段:

#Create a new dictionary
view = {}

#Add all the variables from loop
view[property_variable_name] = property_variable

env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir))
raw_template=env.get_template(template_file_name)

#Call dictionary and replace all variable from template
final_template = raw_template.render(**view)