6
我需要以下引發異常:提高未定義的屬性的例外的Jinja2
jinja2.Template("Hello {{ a.x }}").render(a={})
Jinja2的默默返回a.x
一個空字符串,所以這將呈現爲「你好」。
如何讓jinja2在未定義的屬性上引發異常?
我需要以下引發異常:提高未定義的屬性的例外的Jinja2
jinja2.Template("Hello {{ a.x }}").render(a={})
Jinja2的默默返回a.x
一個空字符串,所以這將呈現爲「你好」。
如何讓jinja2在未定義的屬性上引發異常?
根據文檔你不能因爲這種行爲是一種功能:看到here
我會做的是寫一個表現更在Python的方式,並提出在情況下KeyError
自定義過濾器。
jinja2.Template("Hello {{ a|myget('x') }}").render(a={})
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'
那麼它會工作打算:
print Template("Hello {{ a.x }}", undefined=StrictUndefined).render(a={'x':42})
will pr int:
Hello 42
它可以通過選擇正確的'undefined'類來實際完成(請參閱我的答案)。 – ascobol