2013-10-14 78 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 
     ..... 
相關問題