A Jinja2 extension providing exception handling within templates.
{%- try -%}
{{ 1 / 0 }}
{%- catch -%}
Can't divide by zero!
{%- endtry -%}Can't divide by zero!
This extension works in both sync and async environments, as well as the native variants, too.
pip install jinja-try-catchAnd add the TryCatchExtension to your Environment extensions list:
import jinja2
from jinja_try_catch import TryCatchExtension
jinja_env = jinja2.Environment(extensions=[TryCatchExtension])Simply omit the {% catch %} to silently swallow exceptions
{%- try -%}
{{ 1 / 0 }}
{%- endtry -%}Define a {% catch %} to render something else if an exception is raised
{%- try -%}
{{ 1 / 0 }}
{%- catch -%}
There are infinite zeroes, duh
{%- endtry -%}There are infinite zeroes, duh
The raised exception is exposed within the {% catch %} through the {{ exception }} variable
{%- try -%}
{{ 1 / 0 }}
{%- catch -%}
Uh-oh, an error occurred:
{{ exception.__class__.__name__ }}: {{ exception }}
{%- endtry -%}Uh-oh, an error occurred:
ZeroDivisionError: division by zero