What is the equivalent of "none" in django templates?

Viewed 133082

I want to see if a field/variable is none within a Django template. What is the correct syntax for that?

This is what I currently have:

{% if profile.user.first_name is null %}
  <p> -- </p>
{% elif %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}

In the example above, what would I use to replace "null"?

9 Answers

Look at the yesno helper

Eg:

{{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}

In cases where we need to validate for a field with null value, we may check so and process as under:

{% for field in form.visible_fields %}
    {% if field.name == 'some_field' %}
        {% if field.value is Null %}
            {{ 'No data found' }}
        {% else %}
            {{ field }}
        {% endif %}
    {% endif %}
{% endfor %}

You could try this:

{% if not profile.user.first_name.value %}
  <p> -- </p>
{% else %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif %}

This way, you're essentially checking to see if the form field first_name has any value associated with it. See {{ field.value }} in Looping over the form's fields in Django Documentation.

I'm using Django 3.0.

Just a note about previous answers: Everything is correct if we want to display a string, but pay attention if you want to display numbers.

In particular when you have a 0 value bool(0) evaluates to False and so it will not display and probably is not what you want.

In this case better use

{% if profile.user.credit != None %}
Related