我在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'
我......不明白.我
在生产服务器上,尝试
locale.setlocale( locale.LC_ALL, 'en_CA.UTF-8' )
代替
locale.setlocale( locale.LC_ALL, '' )
使用时''
,语言环境设置为用户的默认值(通常由LANG
环境变量指定).在生产服务器上,看起来是"C",而作为测试用户,它似乎是"en_CA.UTF-8".
我遇到了一个类似的问题,即我通过PyCharm(基于JetBrain的IDEA 12的IDE)运行Django应用时,遇到了同样的问题
使用“ C”语言环境无法进行货币格式设置。
在此之前运行良好的地方就可以正常运行python manage.py runserver
。经过一番挖掘,我在这里找到了有关环境变量的线程讨论LC_ALL
事实证明,如果您编辑“运行配置”并添加环境变量,它将可以正常工作。请参见下面的屏幕截图。希望这对遇到相同问题的其他人有所帮助。