当前位置:  开发笔记 > 编程语言 > 正文

尝试使用Python格式化货币的问题(Django)

如何解决《尝试使用Python格式化货币的问题(Django)》经验,为你挑选了2个好方法。

我在Django中有以下代码:

import locale 
locale.setlocale( locale.LC_ALL, '' )

def format_currency(i):
    return locale.currency(float(i), grouping=True)

它在开发模式下的某些计算机上运行,​​但是一旦我尝试在生产模式下部署它,我就会收到此错误:

Exception Type: TemplateSyntaxError
Exception Value: Caught ValueError while rendering: Currency formatting is not possible using the 'C' locale.
Exception Location: /usr/lib/python2.6/locale.py in currency, line 240

奇怪的是,我可以在生产服务器上执行此操作,它可以正常工作:

python manage.py shell
>>> import locale 
>>> locale.setlocale( locale.LC_ALL, '' )
'en_CA.UTF-8'
>>> locale.currency(1, grouping=True)
'$1.00'

我......不明白.我



1> unutbu..:

在生产服务器上,尝试

locale.setlocale( locale.LC_ALL, 'en_CA.UTF-8' )

代替

locale.setlocale( locale.LC_ALL, '' )

使用时'',语言环境设置为用户的默认值(通常由LANG环境变量指定).在生产服务器上,看起来是"C",而作为测试用户,它似乎是"en_CA.UTF-8".


我遇到了同样的问题并尝试了这个,但得到了一个未知的语言环境错误setlocalte()ing.我在manage.py shell上尝试了它,它说locale是'en_US.UTF-8'.所以,我尝试了`local.setlocale(locale.LC_ALL,'en_US.UTF-8')`并且它完美无缺.谢谢你让我朝着正确的方向前进!

2> Devy..:

我遇到了一个类似的问题,即我通过PyCharm(基于JetBrain的IDEA 12的IDE)运行Django应用时,遇到了同样的问题

使用“ C”语言环境无法进行货币格式设置。

在此之前运行良好的地方就可以正常运行python manage.py runserver。经过一番挖掘,我在这里找到了有关环境变量的线程讨论LC_ALL

事实证明,如果您编辑“运行配置”并添加环境变量,它将可以正常工作。请参见下面的屏幕截图。希望这对遇到相同问题的其他人有所帮助。

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有