Otrzymuję komunikat "TemplateAssertionError: no filtr o nazwie" number_number "" podczas próby zarejestrowania niestandardowego filtru w środowisku szablonów przez zaktualizowanie filtrów dyktować środowisko.jinja2 Filtr niestandardowy "TemplateAssertionError: brak filtru o nazwie" number_number ""
W moim modułu, mam importowane moduł środowiskową następująco:
from jinja2 import environment
W mojej klasie I zdefiniowane w następujący sposób:
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 ...
Wewnątrz mojego pliku szablonu html starałem się wdrożyć filtr w następujący sposób:
{{top_five_url .total|format_number}}
Jak to się dzieje?
Aktualizacja
Czy istnieje domyślna instancja środowiska, powinniśmy używać?
Rozwiązane
Wewnątrz modułu I zdefiniowane moją metodę i aktualizowane filtrów słownika globalnie następująco:
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