访问jinja2中的数字键

时间:2015-11-24 09:13:29

标签: python jinja2

此代码无效:

#!/usr/bin/python
from jinja2 import Template
t = Template("Hello {{ 42.baz }}!")
print t.render({42:{'baz':'World'}})

它显示Hello !而非Hello World!

是否可以使用访问数字键,因为可以使用数字键声明dict

请注意{'42':{'baz':'World'}}不是解决方案

1 个答案:

答案 0 :(得分:3)

数字和字符串被评估为literals,因为Jinja name patterns的工作原理,你不能强迫Jinja将它们视为变量名。因此,{{ 42 }}表示42,而不是名为42的变量。

最简单的解决方案是这样做:

from jinja2 import Template
t = Template("Hello {{ vars[42].baz }}!")
print t.render(vars={42:{'baz':'World'}})

vars只是一个名字,它可以是你想要的任何名称。