我需要以下代码来抛出异常:
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
jinja2.Template("Hello {{ a|myget('x') }}").render(a={})