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

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

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

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

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

2 Solutions collect form web for “Поднять исключение для неопределенных атрибутов в 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={}) 
  • Как настроить django 1.8 для использования jinja2?
  • Как создать страницу 404?
  • Проблема гнездования блока Jinja2
  • Применение фильтров jinja2 к блоку?
  • Динамическое использование шаблонов в Jinja2
  • Как передать список из Python, Jinja2 на JavaScript
  • Jinja-like для Pdf в Python
  • ImportError: импорт по имени файла не поддерживается. (WSGI)
  • Python - лучший язык программирования в мире.