Поднять исключение для неопределенных атрибутов в jinja2

Мне нужно следующее, чтобы создать исключение:

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

Jinja2 тихо возвращает пустую строку для ax , поэтому это отображается как «Hello».

Как заставить jinja2 создавать исключение из неопределенных атрибутов?

 from jinja2 import Template, StrictUndefined print Template("Hello {{ ax }}", 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 {{ ax }}", undefined=StrictUndefined).render(a={'x':42}) 

будет печатать:

 Hello 42 

Согласно документации вы не можете, потому что это поведение является особенностью: см. Здесь

То, что я сделал бы, это написать настраиваемый фильтр, который будет вести себя более питоническим способом и в случае возникновения KeyError .

Что-то, что можно использовать более или менее:

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