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

Templates 在Jinja中动态获取一个变量(来自字符串),templates,dynamic,get,jinja2,Templates,Dynamic,Get,Jinja2,我的Jinja顶级上下文中有按顺序定义的变量,如foo_0,foo_1,等等 我希望能够通过生成类似于“foo_”+str(0)的字符串来动态访问这些变量 如果有效果,我想在我的Jinja模板中执行类似于{{eval(“foo_0”)}}的操作,并按顺序访问这些变量 这可能吗 注意:我正在使用一个我无法控制的云服务(它提供Jinja模板),因此: 我不能在Jinja上下文中使用数据结构(所有变量值必须是字符串) 我无法自定义Jinja运行时环境或添加过滤器。但是,如果知道是否可以通过添加自定义

我的Jinja顶级上下文中有按顺序定义的变量,如
foo_0
foo_1
,等等

我希望能够通过生成类似于
“foo_”+str(0)
的字符串来动态访问这些变量

如果有效果,我想在我的Jinja模板中执行类似于
{{eval(“foo_0”)}}
的操作,并按顺序访问这些变量

这可能吗

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

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

我找不到一种标准的/有文档记录的方法来实现这一点,但通过四处摸索:

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'

这个问题真让我讨厌!“所有变量都必须是字符串”是我真正感兴趣的。如果您可以通过decorator传入一个函数,这将非常简单!