如何使一个变量在jijna2默认为“”如果对象是None而不是这样做?

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

所以如果对象p是None,我想默认值p (first_name和last_name)为“”。 基本上

nvl(p.User[first_name'], "")

错误接收:

Error:  jinja2.exceptions.UndefinedError
    UndefinedError: 'None' has no attribute 'User'

当前回答

除了其他答案,如果变量为None,可以写一些其他的东西,像这样:

{{ variable or '' }}

其他回答

为了避免在"p"或"p. user "为None时抛出异常,您可以使用:

{{ (p and p.User and p.User['first_name']) or "default_value" }}

根据文档,你可以这样做:

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

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

{{p.User['first_name'] or 'My default string'}}

作为另一个解决方案(有点类似于之前的一些):

{{ ( p is defined and p.User is defined and p.User['first_name'] ) |default("NONE", True) }}

注意最后一个变量(p.p uuser ['first_name'])后面没有if定义的test。

除了其他答案,如果变量为None,可以写一些其他的东西,像这样:

{{ variable or '' }}