2013-10-14 9 views
5

में फिल्टर नाम पास करने के लिए चर का उपयोग कैसे करें मैंने कुछ फ़िल्टर परिभाषित किए हैं और इसे अक्सर उपयोग करते हैं। मुझे कुछ ए/बी परीक्षण करने की ज़रूरत है और इसके लिए कुछ स्थितियों में कुछ फ़िल्टरों को अलग-अलग तरीके से काम करना चाहिए।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 
     .....