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