Python 使用有效负载覆盖字典Jinja模板

Python 使用有效负载覆盖字典Jinja模板,python,jinja2,Python,Jinja2,我有一个函数,它从一个文件加载一个Jinja模板,然后应用一个有效负载来设置模板变量 env = Environment(loader=FileSystemLoader(output_dir), trim_blocks=True, lstrip_blocks=True) template_file = os.path.basename(spec_file) template = env.get_template(template_file) jinja_file = template.rende

我有一个函数,它从一个文件加载一个Jinja模板,然后应用一个有效负载来设置模板变量

env = Environment(loader=FileSystemLoader(output_dir), trim_blocks=True, lstrip_blocks=True)
template_file = os.path.basename(spec_file)
template = env.get_template(template_file)
jinja_file = template.render(payload)
示例:

ini_input = str(spec_dict)
template = jinja2.Template(ini_input)
result = template.render(payload)
final_wf = ast.literal_eval(result)
文件内容

Name: '{{NameID}}'
Age: 12
有效载荷:

{'NameID': 'Mugiwara No Luffy'}
输出:

Name: 'Mugiwara No Luffy'
Age: 12
我想从字典而不是文件中加载内容

因此,我们将从字典中加载模板,并从有效负载中设置值

故障排除:

ini_input = str(spec_dict)
template = jinja2.Template(ini_input)
result = template.render(payload)
final_wf = ast.literal_eval(result)
我尝试使用jinja2.DictLoader而不是文件系统加载器

但仍然无法为其实施适当的解决方案。 我是jinja2 lib的初学者

有人能帮我解决这个问题吗


谢谢。

使用jinja2.Template解决问题。

步骤:

  • 将字典转换为字符串
  • 创建jinja模板
  • 使用有效负载呈现来自模板的结果
  • 将结果转换回字典
  • 代码:

    ini_input = str(spec_dict)
    template = jinja2.Template(ini_input)
    result = template.render(payload)
    final_wf = ast.literal_eval(result)