Filter 如何在jinja2模板中使用变量传递过滤器名称

Filter 如何在jinja2模板中使用变量传递过滤器名称,filter,jinja2,Filter,Jinja2,我已经定义了一些过滤器并经常使用它。我需要做一些A/B测试,在某些情况下,一些过滤器应该以不同的方式工作 最简单的方法是在模板中创建一个变量来存储过滤器名称。大概是这样的: {% set filter_name = 'some_name' %} {{ my_value|filter_name }} 但当我尝试此操作时,会出现一个错误: TemplateAssertionError:没有名为“filter\u name”的筛选器 请帮助我找到解决方案。通过执行{%set filter\u nam

我已经定义了一些过滤器并经常使用它。我需要做一些A/B测试,在某些情况下,一些过滤器应该以不同的方式工作

最简单的方法是在模板中创建一个变量来存储过滤器名称。大概是这样的:

{% set filter_name = 'some_name' %}
{{ my_value|filter_name }}
但当我尝试此操作时,会出现一个错误:

TemplateAssertionError:没有名为“filter\u name”的筛选器


请帮助我找到解决方案。

通过执行
{%set filter\u name='some\u name%}
,您已经创建了一个名为“filter\u name”的字符串变量。您应该创建一个过滤器,它接受另一个参数,并根据该参数决定要执行的操作

{% set filter_name = 'some_name' %}
{{ my_value|myfilter(filter_name) }}


def myfilter(value, filtername):
    if(filtername is 'twice')
        return value*2
    else
        .....