Проблемы, пытающиеся отформатировать валюту с Python (Django)

У меня есть следующий код в Django:

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

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

Это работает над некоторыми компьютерами в dev режиме, но как только я пытаюсь развернуть его на производстве, я получаю эту ошибку:

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'

Я.. не получайте it.i

19
задан h3. 1 June 2010 в 19:44
поделиться

2 ответа

На производственном сервере попробуйте

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

вместо

locale.setlocale( locale.LC_ALL, '' )

. При использовании '' локаль устанавливается по умолчанию пользователя (обычно указывается LANG переменная среды). На производственном сервере это выглядит как «C», в то время как для тестового пользователя это выглядит как «en_CA.UTF-8».

26
ответ дан 30 November 2019 в 03:48
поделиться

http://docs.python.org/library/locale.html#locale.setlocale говорит, что он не является потокобезопасным, что не должно быть проблемой при запуске сервера разработки, но может вызвать проблемы с запуском это на производственном сервере в многопоточной среде!

2
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: