Jinja2 Custom Filter "TemplateAssertionError: No filter named" format_number ""

I get a TemplateAssertionError: no filter message with the name "format_number" "when I try to register a custom filter in the template environment by updating the dict filters in the environment.

In my module, I imported the environment module as follows:

from jinja2 import environment 

In my class, I defined the following method:

 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 ... 

Inside my html template file, I tried to implement a filter as follows:

 {{top_five_url .total|format_number}} 

How does this happen?

Update

Is there a default environment instance we should use?

Decided

Inside the module, I defined my method and updated the filter dictionary around the world as follows:

 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 
+6
source share
1 answer

I could solve my problem as follows:

Inside the module, I defined my method and updated the filter dictionary around the world as follows:

 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 
+7
source

Source: https://habr.com/ru/post/902830/


All Articles