在Jinja中动态获取变量(来自字符串)

Max*_*ace 9 templates get dynamic jinja2

我的神社顶级上下文中的序列,例如定义的变量foo_0,foo_1等等.

我希望通过生成代码类似的字符串来动态访问这些变量"foo_" + str(0).

如果有效,我想{{ eval("foo_0") }}在我的Jinja模板中做一些事情,并按顺序访问这些变量.

这可能吗?

注意:我正在使用我无法控制的云服务(提供Jinja模板),因此:

  • 我不能在Jinja上下文中使用数据结构(所有变量值必须是字符串).
  • 我无法自定义Jinja运行时环境或添加过滤器.但是,知道是否可以通过添加自定义过滤器来解决这个问题会很有帮助.

Dan*_*ank 5

我无法找到标准/记录的方法来做到这一点,但通过四处寻找:

In [30]: Template("{{ self._TemplateReference__context.resolve('foo_0')  }}").render(foo_0='this_is_foo_0', foo_1='this_is_foo_1')
Out[30]: 'this_is_foo_0'
Run Code Online (Sandbox Code Playgroud)