【问题标题】:Overriding a dictionary Jinja template with payload使用有效负载覆盖字典 Jinja 模板
【发布时间】:2021-07-16 20:36:23
【问题描述】:

我有一个函数可以从文件中加载 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)

示例:

文件内容

Name: '{{NameID}}'
Age: 12

有效载荷:

{'NameID': 'Mugiwara No Luffy'}

输出:

Name: 'Mugiwara No Luffy'
Age: 12

我想从字典而不是文件中加载内容。

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

疑难解答:

我尝试使用 jinja2.DictLoader 而不是 FileSystemLoader

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

谁能帮我解决这个问题?

谢谢。

【问题讨论】:

    标签: python jinja2


    【解决方案1】:

    使用 jinja2.Template 解决的问题:

    步骤:

    1. 将字典转换为字符串
    2. 创建 jinja 模板
    3. 使用有效负载从模板渲染结果
    4. 将结果转换回字典

    代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-12
      • 2020-10-14
      • 1970-01-01
      • 2021-06-30
      • 2022-11-28
      • 2011-01-09
      • 2019-08-05
      • 2021-12-29
      相关资源
      最近更新 更多