Search code examples
jinja2

Jinja2 template variable if None Object set a default value


How to make a variable in Jijna2 default to "" if object is None instead of doing something like this?

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

So if object p isNone. I want to default the values of p (first_name and last_name) to "". Basically:

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

Error receiving:

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


Solution

  • Use the none test (not to be confused with Python's None object!):

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

    or:

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

    or if you need an empty string:

    {{ p.User['first_name'] if p is not none }}