如何使用变量在jinja2模板中传递过滤器名称 [英] how to use variable to pass filter name in jinja2 templates

查看:454
本文介绍了如何使用变量在jinja2模板中传递过滤器名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



最简单的方法是创建一个变量存储过滤器名称的模板。如下所示:

  {%set filter_name ='some_name'%} 
{{my_value | filter_name}}

但是当我尝试这个时,我得到一个错误:

TemplateAssertionError:没有名为filter_name的过滤器



请帮我找个解决办法。 p>

解决方案

已经创建了一个名为filter_name的字符串变量。你应该创建一个过滤器,它会根据它来决定做什么。

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

$ b $ myfilter(value,filtername):
if(filtername is'twice')
返回值* 2
其他
.....


I have defined some filters and use it very often. I need to do some A/B tests and for this in some situations some of filters should work in different way.

Easiest way to do this would be create a variable in template which store a filter name. something like this:

{% set filter_name = 'some_name' %}
{{ my_value|filter_name }}

But when I try this, I get an error:

TemplateAssertionError: no filter named 'filter_name'

Please help me to find a solution.

解决方案

By doing {% set filter_name = 'some_name' %}, you have create a string variable named "filter_name". You should create a filter which takes one more argument on basis of which it decides what to do.

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


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

这篇关于如何使用变量在jinja2模板中传递过滤器名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆