What is the equivalent of “none” in django templates?


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"?

Answer rating: 150

None, False and True all are available within template tags and filters. None, False, the empty string ("", "", """""") and empty lists/tuples all evaluate to False when evaluated by if, so you can easily do

{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}

A hint: @fabiocerqueira is right, leave logic to models, limit templates to be the only presentation layer and calculate stuff like that in you model. An example:

# someapp/models.py
class UserProfile(models.Model):
    user = models.OneToOneField("auth.User")
    # other fields

    def get_full_name(self):
        if not self.user.first_name:
        return " ".join([self.user.first_name, self.user.last_name])

# template
{{ user.get_profile.get_full_name }}

Hope this helps :)

Answer rating: 79

You can also use another built-in template default_if_none

{{ profile.user.first_name|default_if_none:"--" }}

Get Solution for free from DataCamp guru