6
当我尝试通过更新过滤器在模板环境中注册自定义过滤器时,出现“TemplateAssertionError:没有过滤器名为'format_number'”错误关于环境的字典。jinja2自定义过滤器“TemplateAssertionError:没有名为'format_number'的过滤器”
在我的模块,我已经导入环境模块如下:
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