我试图使用intcomma格式化模板中的数字,但它无法正常工作。
{%load humanize%}
{%blocktrans with val=myvalue|intcomma%}The number is {{val}}{%endblocktrans%}
经过一番搜索,我发现django.utils.formats.number_format不是函数。以下是我的测试:
corpweb@56944bf480d1:~$ ./manage.py shell
Python 3.4.4 (default, Feb 17 2016, 02:50:56)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import locale
>>> from django.utils.formats import number_format
>>> val=123456789
>>> number_format(val,force_grouping=True)
'123456789'
>>> locale.getlocale()
('en_US', 'UTF-8')
>>>
我有什么设置错误吗?
答案 0 :(得分:1)
在Django app流程之外渲染模板或使用number_format
时,不会激活翻译模块。关于如何在自定义管理命令中启用翻译的Here are a few notes and instructions。
要使shell示例正常工作,我们只需要激活翻译模块:
(venv) $ ./manage.py shell
Python 3.6.4 (default, Mar 1 2018, 18:36:50)
>>> from django.utils.formats import number_format
>>> from django.utils import translation
>>> translation.activate('en-us')
>>> number_format(50000, force_grouping=True)
'50,000'
上面的关键字是:translation.activate('en-us')
答案 1 :(得分:0)
我猜你的设置一切正常。只需将USE_L10N = True
设置为settings.py
,如果设置为False,就像@Tim Schneider所提到的那样,你最好像@ Leonard2所提到的那样{{ val|intcomma }}
尝试它,它必须有效。并且正如提到的那样here确保:
要激活这些过滤器,请添加' django.contrib.humanize'到您的INSTALLED_APPS设置。