我在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'
我。。不明白。我
在生产服务器上,尝试
而不是
当您使用
''
时,语言环境被设置为用户的默认值(通常由LANG
环境变量指定)。在生产服务器上,它似乎是“C”,而作为测试用户,它似乎是“en_C a.UTF-8”。我遇到了一个类似的问题,我通过PyCharm(JetBrain基于IDE a 12的IDE)运行Django应用程序,它得到了相同的问题
在那里,运行
python manage.py runserver
运行得很好。在深入研究之后,我发现了一个关于环境变量LC_ALL
here的线程讨论如果您编辑“Run Configration”并添加一个环境变量,它就会工作得很好。见下面的截图。希望这能帮助遇到同样问题的人。
http://docs.python.org/library/locale.html#locale.setlocale说它不是线程安全的,这不应该是运行dev服务器的问题,但可能会导致在多线程环境中的生产服务器上运行它的问题!
相关问题 更多 >
编程相关推荐