2013-10-14 11 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 
     ..... 
関連する問題