[英]Raise an exception for undefined attributes in jinja2
我需要以下内容来引发异常:
jinja2.Template("Hello {{ a.x }}").render(a={})
Jinja2 默默地为ax
返回一个空字符串,因此呈现为“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'
如果为ax设置一个值,那么它将按预期工作:
print Template("Hello {{ a.x }}", undefined=StrictUndefined).render(a={'x':42})
将打印:
Hello 42
根据文档,您不能,因为该行为是一个功能:请参阅此处
我要做的是编写一个自定义过滤器,以pythonic方式表现更多,并在案例中引发KeyError
。
可以或多或少地使用的东西:
jinja2.Template("Hello {{ a|myget('x') }}").render(a={})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.