jinja2

2013-07-02 5 views
6
나는 예외를 발생하려면 다음이 필요

에서 정의되지 않은 속성에 대한 예외를 발생 :jinja2

jinja2.Template("Hello {{ a.x }}").render(a={}) 

Jinja2는 자동으로 a.x에 대해 빈 문자열을 반환, 그래서 이것은 "안녕하세요"로 렌더링합니다.

정의되지 않은 속성에 대해 jinja2에서 예외를 발생 시키려면 어떻게해야합니까? 그 행동이 기능 때문에

답변

1

문서에 따르면, 당신은 할 수 없습니다 볼 here

내가 무엇을 할 것은 파이썬 방법으로 더 많은 동작하며 경우에 KeyError을 제기 사용자 정의 필터를 작성하는 것입니다. 예외 올릴 것이다

jinja2.Template("Hello {{ a|myget('x') }}").render(a={}) 
+1

올바른 '정의되지 않은'클래스를 선택하여 실제로 수행 할 수 있습니다 (내 대답 참조). – ascobol

7
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}) 

pr int :

Hello 42