Mi viene visualizzato il messaggio "TemplateAssertionError: nessun filtro denominato 'format_number'" errore, quando si tenta di registrare un filtro personalizzato nell'ambiente del modello aggiornando i filtri dettare sull'ambiente.jinja2 Filtro personalizzato "TemplateAssertionError: nessun filtro denominato 'format_number'"
Nel mio modulo, Ho importato modulo ambiente come segue:
from jinja2 import environment
Nella mia classe ho definito il seguente metodo:
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 il mio file di modello HTML ho cercato di realizzare il filtro come segue:
{{top_five_url .total|format_number}}
Come sta succedendo?
Aggiornamento
C'è un'istanza ambiente predefinito, dovremmo usare?
risolto
All'interno del modulo, ho definito il mio metodo e aggiornato il Dictionary Filtri a livello mondiale come segue:
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