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