jinja2 自定义过滤器“TemplateAssertionError:没有名为“format_number”的过滤器”

2024-01-03

我得到了“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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jinja2 自定义过滤器“TemplateAssertionError:没有名为“format_number”的过滤器” 的相关文章

随机推荐