我需要以下内容来引发异常:
jinja2.Template("Hello {{ a.x }}").render(a={})
Jinja2以静默方式返回a.x的空字符串,因此呈现为“Hello”.
如何让jinja2在未定义的属性上引发异常?
解决方法
from jinja2 import Template,StrictUndefined print Template("Hello {{ a.x }}",undefined=StrictUndefined).render(a={})
这将引发异常:
File "<template>",line 1,in top-level template code jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'x'
如果为a.x设置了值,那么它将按预期工作:
print Template("Hello {{ a.x }}",undefined=StrictUndefined).render(a={'x':42})
将打印:
Hello 42