Skip to main content

Jinja2 extension adding {% try %} {% catch %} exception handling

Project description

jinja-try-catch

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.

Quickstart

pip install jinja-try-catch

And add the TryCatchExtension to your Environment extensions list:

import jinja2
from jinja_try_catch import TryCatchExtension

jinja_env = jinja2.Environment(extensions=[TryCatchExtension])

Usage

Suppressing errors

Simply omit the {% catch %} to silently swallow exceptions

{%- try -%}
  {{ 1 / 0 }}
{%- endtry -%}

Error messages

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

Display exceptions

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jinja_try_catch-0.1.0.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

jinja_try_catch-0.1.0-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page