how to use variable to pass filter name in jinja2 templates

余生长醉 提交于 2020-01-01 10:09:26

问题


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.


回答1:


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
        .....


来源:https://stackoverflow.com/questions/19361757/how-to-use-variable-to-pass-filter-name-in-jinja2-templates

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!