Necesito lo siguiente para levantar una excepción:
jinja2.Template("Hello {{ ax }}").render(a={})
Jinja2 devuelve silenciosamente una cadena vacía para el ax
, por lo que se presenta como “Hola”.
¿Cómo hago para que jinja2 genere una excepción en atributos no definidos?
from jinja2 import Template, StrictUndefined print Template("Hello {{ ax }}", undefined=StrictUndefined).render(a={})
Esto provocará una excepción:
File "", line 1, in top-level template code jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'x'
Si establece un valor para ax, funcionará según lo previsto:
print Template("Hello {{ ax }}", undefined=StrictUndefined).render(a={'x':42})
imprimirá:
Hello 42
De acuerdo con la documentación, usted no puede porque ese comportamiento es una característica: vea aquí
Lo que haría es escribir un filtro personalizado que se comporte más de forma pirónica y KeyError
un KeyError
en el caso.
Algo que se puede usar más o menos como:
jinja2.Template("Hello {{ a|myget('x') }}").render(a={})