2011-03-30 17 views
6

के लिए कस्टम jinja2 फ़िल्टर I Jinja2 के लिए एक कस्टम फ़िल्टर कैसे लिखता है जो टेम्पलेट में लूप के लिए उपयोग में अंतर्निहित 'सॉर्ट' फ़िल्टर की तरह एक पुनरावर्तनीय पर लागू होता है?इटरेटर

उदाहरण के लिए:

{% for item in iterable|customsort(somearg) %} 
... 
{% endfor %} 

सामान्य प्रलेखन

उत्तर

12

उसी तरह आप किसी भी अन्य फिल्टर लिखते हैं के लिए http://jinja.pocoo.org/docs/api/#writing-filters देखें। यहां एक उदाहरण दिया गया है जो आपको शुरू करना चाहिए:

from jinja2 import Environment, Undefined 

def custom_sort(iterable, somearg): 
    if iterable is None or isinstance(iterable, Undefined): 
     return iterable 

    # Do custom sorting of iterable here 

    return iterable 

# ... 

env = Environment() 
env.filters['customsort'] = custom_sort 

दक्षता के बारे में चिंता न करें जब तक कि यह कोई समस्या न हो जाए। किसी भी मामले में टेम्पलेट इंजन बोतल-गर्दन होने की संभावना नहीं है।

+0

धन्यवाद बहुत उपयोगी – sbenthall

+1

धन्यवाद इसने मुझे इस फ़िल्टर के साथ मदद की: http://stackoverflow.com/questions/10406939/how-to-clean-up-this-jinja2-and-or-boolean-expression –

+0

नहीं कर सकता बोटलपी के साथ काम करने के लिए इसे प्राप्त करें :( http://pastebin.com/xQJ5TCKr – include

संबंधित मुद्दे