jinja2 Пользовательский фильтр «TemplateAssertionError: нет фильтра с именем« format_number »»

Я получаю ошибку « TemplateAssertionError: no filter с именем« format_number »при попытке зарегистрировать собственный фильтр в среде шаблонов, обновив фильтры dict в среде.

В моем модуле я импортировал модуль среды следующим образом:

from jinja2 import environment 

В моем классе я определил следующий метод:

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

Внутри моего файла шаблона html я попытался реализовать фильтр следующим образом:

 {{top_five_url .total|format_number}} 

Как это происходит?

Обновить

Есть ли экземпляр среды по умолчанию, мы должны использовать?

Постановили

Внутри модуля я определил свой метод и обновил словарь фильтров по всему миру следующим образом:

 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 

Я мог бы решить свою проблему, как следует,

Внутри модуля я определил свой метод и обновил словарь фильтров по всему миру следующим образом:

 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