2013-10-14 2 views
5

일부 필터를 정의하고 자주 사용합니다. 일부 A/B 테스트를 수행해야하며 일부 상황에서 일부 필터가 다른 방식으로 작동해야합니다.변수를 사용하여 jinja2 템플릿에서 필터 이름을 전달하는 방법

가장 쉬운 방법은 템플릿에 필터 이름을 저장하는 변수를 만드는 것입니다. 이 같은 :

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

하지만이 때, 나는 오류가 발생이 :

TemplateAssertionError: no filter named 'filter_name'

해결책을 찾기 위해 도와주세요.

답변

4

{% set filter_name = 'some_name' %}을 수행하면 "filter_name"이라는 문자열 변수를 만들 수 있습니다. 무엇을 할 것인지를 결정하는 기준으로 하나 이상의 인수를 취하는 필터를 만들어야합니다.

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


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