繁体   English   中英

为 jinja2 中的未定义属性引发异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM