jinja2 Filtro personalizado “TemplateAssertionError: no hay filtro llamado ‘format_number'”

Recibo el error ” TemplateAssertionError: no hay filtro llamado ‘format_number’ ” al intentar registrar un filtro personalizado en el entorno de plantilla actualizando los filtros dictados en el entorno.

En mi módulo, he importado módulo de entorno de la siguiente manera:

from jinja2 import environment 

En mi clase definí el siguiente método:

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

Dentro de mi archivo de plantilla html intenté implementar el filtro de la siguiente manera:

 {{top_five_url .total|format_number}} 

¿Cómo está pasando esto?

¿Hay alguna instancia de entorno por defecto que deberíamos usar?

Podría resolver mi problema de la siguiente manera,

Dentro del módulo, definí mi método y actualicé el diccionario de filtros globalmente de la siguiente manera:

 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