मैं हो रही है "TemplateAssertionError: कोई फिल्टर 'format_number' नाम" त्रुटि, जब टेम्पलेट पर्यावरण पर कोई कस्टम फ़िल्टर रजिस्टर करने के लिए कोशिश कर रहा है फिल्टर को अपडेट करके पर्यावरण पर निर्देश।jinja2 कस्टम फ़िल्टर "TemplateAssertionError: कोई भी फ़िल्टर नाम 'format_number'"
मेरी मॉड्यूल में, मैं पर्यावरण मॉड्यूल के रूप में इस आयात किया है:
from jinja2 import environment
मेरी कक्षा में मैं परिभाषित निम्न विधि:
class DashboardHandler(SecurePageHandler):
def format_number(number):
s = '%d' % number
groups = []
while s and s[-1].isdigit():
groups.append(s[-3:])
s = s[:-3]
return s + ','.join(reversed(groups))
def do_get(self):
# ... snip ...
env = environment.Environment(self)
env.filters['format_number'] = self.format_number
# ... snip ...
मेरी एचटीएमएल टेम्पलेट फ़ाइल के अंदर मैं फिल्टर लागू करने की कोशिश की निम्नानुसार है:
{{top_five_url .total|format_number}}
यह कैसे हो रहा है?
अद्यतन
वहाँ एक डिफ़ॉल्ट वातावरण उदाहरण है, हम इस्तेमाल करना चाहिए?
हल मॉड्यूल के अंदर, मैं अपने विधि परिभाषित और अद्यतन फिल्टर विश्व स्तर पर शब्दकोश इस प्रकार है:
import jinja2
def format_number(number):
s = '%d' % number
groups = []
while s and s[-1].isdigit():
groups.append(s[-3:])
s = s[:-3]
return s + ','.join(reversed(groups))
jinja2.filters.FILTERS['format_number'] = format_number