Django Template Ternary Operator

Just because they haven't been mentioned here yet: the built in template tags default, and default_if_none can be useful in simple circumstances:

default

If value evaluates to False, uses the given default. Otherwise, uses the value.

For example:

{{ value|default:"nothing" }}

If value is "" (the empty string), the output will be nothing.

default_if_none

If (and only if) value is None, uses the given default. Otherwise, uses the >value.

Note that if an empty string is given, the default value will not be used. Use >the default filter if you want to fallback for empty strings.

For example:

{{ value|default_if_none:"nothing" }}

If value is None, the output will be the string "nothing".

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default


Why would you need a ternary operator within a template? {% if %} and {% else %} are all you need.

Or you could try the firstof tag:

{% firstof var1 var2 var3 %}

which outputs the first one of var1, var2 or var3 which evaluates to a True value.


You can use the yesno filter:

{{ value|yesno:"yeah,no,maybe" }}

You can learn more here


You don't. The Django {% if %} templatetag has only just started supporting ==, and, etc. {% if cond %}{% else %}{% endif %} is as compact as it gets for now.