Jinja2 テンプレート変数 if None Object デフォルト値の設定

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 を使用します (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' }}

や、空の文字列が必要な場合は

{{ p.User['first_name'] if p != None }}
解説 (1)
{{p.User['first_name'] or 'My default string'}}
解説 (1)

このドキュメント](http://jinja.pocoo.org/docs/templates/#builtin-filters)に続いて、あなたはその方法でこれを行うことができます

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