Skip to main content

Jinja2 extension to enable the use of any filter as a custom autescape filter.

Project description

Overview

Jinja2 extension to enable the use of any filter as a custom autoscape filter.

This package allows you to define rules to determine when your custom autoescaping filter will be enabled using the same 'select_autoescape' method you already use to determine when the built-in autoescaping filter is enabled.

Usage

from jinja2_ext_custom_autoescaping import CustomAutoescapeExtension, enable_custom_autoescaping
from jinja2 import Environment, select_autoescape, FileSystemLoader

# Your custom filter...        
def my_filter(val):
    print(val)
    if isinstance(val, str):
        return val.replace(r"\\", r"\\\\")
    return val

    
# Here you set the rules for when the built-in autoescaping will be enabled
built_in_select_autoescape = select_autoescape(enabled_extensions=['html', 'htm', 'xml'],
                                               disabled_extensions=['txt', 'tex'],
                                               default_for_string=True,
                                               default=True)

# - select_autoescape is a closure
# - enabled_extensions takes precedence over disabled_extensions, so an extension in both lists will be enabled
# - You most likely do not want to have custom autoescaping on while built-in autoescaping is also on

# Here you set the rules for when your custom autoescaping will be enabled
custom_select_autoescape = select_autoescape(enabled_extensions=['tex', 'txt'],
                                             disabled_extensions=[],
                                             default_for_string=False,
                                             default=False)

# Just focusing on the important parts of your Environment construction.
env = Environment(extensions=[CustomAutoescapeExtension],
                  loader=FileSystemLoader(['.']),
                  autoescape=built_in_select_autoescape)

opts = {'custom_select_autoescape': custom_select_autoescape,
        'custom_autoescape_filter_name': 'my_filter',
        'custom_autoescape_filter_func': my_filter}

# Register the filter and enables autoescaping
enable_custom_autoescaping(env, **opts)

# Now you are ready to go...
template = env.get_template('test_template.txt')
print(template.render(var={'entry 1': 'value 1', 'entry2': r'val\\ue 2'}))

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

jinja2-ext-custom-autoescaping-0.1.0.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file jinja2-ext-custom-autoescaping-0.1.0.tar.gz.

File metadata

  • Download URL: jinja2-ext-custom-autoescaping-0.1.0.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.6.7 Linux/4.18.0-13-generic

File hashes

Hashes for jinja2-ext-custom-autoescaping-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cf0bfa47b6ee914a7288002502c91e8e995d5ed6ad28f61849ee4ed9da7fb387
MD5 ecde66e0e6418bc0bd914102ac31ab0d
BLAKE2b-256 d4dfc7de0fc61715d5563ef01f662617400bffc271ac031e0427d4674303a1ee

See more details on using hashes here.

File details

Details for the file jinja2_ext_custom_autoescaping-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jinja2_ext_custom_autoescaping-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eea378d0acff57249c76da7f39221886a831ca164ea3a4065465668a14bbfc03
MD5 31b4da36db915f607e82d9b9f182894f
BLAKE2b-256 07c8a5ad8411138f9df4ae1af049e6b594a89e951591481f4b22fc996b38356b

See more details on using hashes here.

Supported by

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