jinja2扩展,允许将任何筛选器用作自定义autescape筛选器。

jinja2-ext-custom-autoescaping的Python项目详细描述


概述

Jinja2扩展,允许将任何筛选器用作自定义的Autoscape筛选器。

此包允许您定义规则以确定自定义自动转义筛选器将在何时 使用已用于确定的“选择自动转义”方法启用 启用内置自动转义筛选器时。

用法

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'}))

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中STDIN的不同方式是什么   java有没有办法让程序将文本文件中的“\n”识别为换行代码?   java JList不显示项目   java试图反转句子中的字符   infinte列表中的java搜索策略   java使用motionevents模拟鼠标单击   java使用Spring@Cacheable和@PostFilter   java如何使用枚举名获取枚举id   Java无法找到并加载CSV文件   CyclicBarrier上的java可见性同步?   如何将java与javascript调用解耦?小程序正在等待自己!   java如何向被请求方发送客户端的SOAP响应   java安卓:固定位置工具栏