首页 文章

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

提问于
浏览
9

我的Jinja顶级上下文具有按顺序定义的变量,如 foo_0foo_1 等 .

我希望能够通过使用像 "foo_" + str(0) 这样的代码生成字符串来动态访问这些变量 .

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

这可能吗?

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

  • 我不能在Jinja上下文中使用数据结构(所有变量值必须是字符串) .

  • 我无法自定义Jinja运行时环境或添加过滤器 . 但是,知道是否可以通过添加自定义过滤器来解决这个问题会很有帮助 .

1 回答

  • 1

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

    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'
    

相关问题