jinja2

2013-07-02 22 views
6
bir istisna yükseltmek için aşağıdaki ihtiyaç

tanımsız nitelikler için bir istisna Raise:jinja2

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

jinja2 sessizce a.x için boş bir dize döndürür, bu nedenle bu "Merhaba" olarak vermektedir.

jinja2, tanımlanmamış özniteliklerde bir istisna oluşturmasını nasıl sağlayabilirim? Bu davranış bir özelliktir çünkü

cevap

1

belgelere göre değil: bkz here

Ne yapacağını pythonic şekilde daha davranır ve durumda bir KeyError yükseltir özel bir filtre yazmaktır. Bir istisna yükseltecektir

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

Doğru 'tanımlanmamış' sınıfı seçilerek yapılabilir (cevabıma bakın). – ascobol

7
from jinja2 import Template, StrictUndefined 
print Template("Hello {{ a.x }}", undefined=StrictUndefined).render(a={}) 

Bu: az çok gibi kullanılabilir

şey planlandığı gibi sen balta için bir değer ayarlarsanız

File "<template>", line 1, in top-level template code 
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'x' 

o zaman çalışacak :

( ) int:
Hello 42