首页 > 解决方案 > 嵌套情况下如何使用jinja2处理dict和list

问题描述

我尝试使用python+jinja2处理文件,但是jinja2似乎对dict和list的支持不太友好。使用list和dict时会抛出异常:'xxx is undefined'。我尝试在jinja2中使用DebugUndefined参数,但是没有用。示例代码:

from jinja2 import Template,DebugUndefined
template = Template("{{var1}}-{{ var2[0] }}",undefined = DebugUndefined)

rendered1 = template.render(var1=5)
print(rendered1)
# expect 5-{{ var2[0]}}
rendered2 = Template(rendered1).render(var2=['a', 'b', 'c', 'd'])
print(rendered2)
# expect 5-a

代码无法运行并抛出异常“jinja2.exceptions.UndefinedError: 'var2' is undefined”。关于dict的代码是一样的。

from jinja2 import Template,DebugUndefined
template = Template("{{var1}}-{{ var2[Alice] }}",undefined = DebugUndefined)
rendered1 = template.render(var1=5)
print(rendered1)
# expect 5-{{ var2[Alice]}}
rendered2 = Template(rendered1).render(var2 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'})
print(rendered2)
# expect 5-2341

我注意到flask+jinja2 可以处理这个问题。烧瓶是否更改了一些 jinja2 的代码?请问有什么想法吗?新手——温柔点。谢谢。

标签: pythonflaskjinja2

解决方案


推荐阅读