首页 > 解决方案 > 使用 Jinja 忽略错误,保持代码完整

问题描述

我正在尝试在 Python 脚本中呈现 Jinja 文件。该文件具有三种类型的指令 -

  1. 典型的 for 循环
  2. 进口说明
  3. 从导入运行宏

1)我想要的只是扁平化的for循环。2) 为了避免导入失败,我将 forgivingLoader 子类化。3)但是,当它被调用时,我在绕过导入时遇到了问题。我尝试了 2 种不同的方法 - 子类 unDefined 但{{ abc.callf("arg1", "arg2") }}被替换,arg1,arg2因为 unDefined 无法访问调用函数,只能访问参数。或者,当我使用 DebugUndefined(它也是 unDefined 的子类)时,因为导入静默失败,它无法找到abc.callf

下面是我所针对的示例输入和预期输出。有人可以帮我吗?谢谢!

输入:

Starting  
{% import "abc.yml" as abc %}  
  {{ abc.callf("arg1", "arg2") }}  
{% set forloopvar = ["var1", "var2"] %}  
{% for var in forloopvar %}  
  {{ var }}here  
{% endfor %}  
the end

预期输出:

Starting
{% import "abc.yml" as abc %}
  {{ abc.callf("arg1", "arg2") }}
  var1here
  var2here
the end

标签: pythonjinja2

解决方案


推荐阅读