Jinja2模板variables,如果None对象设置了默认值

如何使jijna2中的variables默认为“”如果对象是None而不是做这样的事情?

{% if p %} {{ p.User['first_name']}} {% else %} NONE {%endif %} 

所以如果对象p是None,我想把p(first_name和last_name)的值默认为“”。 基本上nvl(p.User [first_name'],“”)

错误接收:错误:jinja2.exceptions.UndefinedError UndefinedError:'None'没有属性'User'

使用none内build函数( http://jinja.pocoo.org/docs/templates/#none ):

 {% if p is not none %} {{ p.User['first_name'] }} {% else %} NONE {%endif %} 

要么

 {{ p.User['first_name'] if p != None else 'NONE' }} 

或者如果你需要一个空string:

 {{ p.User['first_name'] if p != None }} 
 {{p.User['first_name'] or 'My default string'}} 

根据文档,你可以做:

 {{ p|default('', true) }} 

原因None在布尔上下文中转换为False

除了其他答案之外,如果variables是None,那么可以写如下其他的东西:

 {{ variable or '' }} 

遵循这个文档你可以这样做:

 {{ p.User['first_name']|default('NONE') }} 

{{(p和p.User和p.User ['first_name'])或“default_value”}}