jinja2 Custom filter “TemplateAssertionError: no filter named 'format_number'”

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-07 02:54:32

问题


I'm getting the "TemplateAssertionError: no filter named 'format_number'" error, when trying to register a custom filter on the template environment by updating the filters dict on the environment.

In my module, I have imported environment module as follows:

from jinja2 import environment 

In my class I defined the following method:

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

Inside my html template file I tried to implement the filter as follows:

{{top_five_url .total|format_number}}

How is this happening?

Is there a default environment instance, we should use?


回答1:


I could resolve my problem as follow,

Inside the module, I defined my method and updated the filters dictionary globally as follows:

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


来源:https://stackoverflow.com/questions/8339899/jinja2-custom-filter-templateassertionerror-no-filter-named-format-number

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!