Obtengo el "TemplateAssertionError: ningún filtro llamado 'formato_numero'" error al intentar registrar un filtro personalizado en el entorno de plantilla actualizando los filtros dict sobre el medio ambiente.jinja2 Filtro personalizado "TemplateAssertionError: no filter named 'format_number'"
En mi módulo, me han importado módulo de medio ambiente de la siguiente manera:
from jinja2 import environment
En mi clase I define 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 traté de aplicar el filtro de la siguiente manera:
{{top_five_url .total|format_number}}
¿Cómo va esto?
actualización
¿Existe una instancia de entorno por defecto, debemos utilizar?
Resuelta
Dentro del módulo, he definido mi método y actualizan los filtros Diccionario globalmente como sigue:
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