此代码无效:
#!/usr/bin/python
from jinja2 import Template
t = Template("Hello {{ 42.baz }}!")
print t.render({42:{'baz':'World'}})
它显示Hello !
而非Hello World!
是否可以使用jinja2访问数字键,因为可以使用数字键声明dict
?
请注意{'42':{'baz':'World'}}
不是解决方案
答案 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
只是一个名字,它可以是你想要的任何名称。