Search code examples
pythonjinja2

Suppress "None" output as string in Jinja2


How do I persuade Jinja2 to not print "None" when the value is None?

I have a number of entries in a dictionary and I would like to output everything in a single loop instead of having special cases for different keywords. If I have a value of None (the NoneType not the string) then the string "None" is inserted into the template rendering results.

Trying to suppress it using {{ value or '' }} works too well as it will replace the numeric value zero as well.

Do I need to filter the dictionary before passing it to Jinja2 for rendering?


Solution

  • In new versions of Jinja2 (2.9+):

    {{ value if value }}

    In older versions of Jinja2 (prior to 2.9):

    {{ value if value is not none }} works great.

    if this raises an error about not having an else try using an else ..

    {{ value if value is not none else '' }}