Почему django использует запятую как десятичный разделитель
Я использую python 2.6 и django 1.27
моя модель
class Plan(models.Model):
price = models.DecimalField(max_digits=5, decimal_places=2,default=0)
.....
в моем шаблоне я
{{plan.price}}
Моя проблема в том, что на моей локальной машине я получаю точку, используемую как разделитель, например, "2.54"
Пока на моей производственной машине я получаю "2,54" - запятая используется как разделитель.
Я бы хотел, чтобы он повсюду использовал точку.
в django docs
https://docs.djangoproject.com/en/1.2/ref/settings/#decimal-separator
он говорит, что есть опция "DECIMAL_SEPARATOR", по умолчанию это точка.
btw в обеих машинах
In [2]: from django.conf import settings
In [3]: print settings.DECIMAL_SEPARATOR
.
РЕШЕНИЕ:
как отметил Марцин,
установка USE_L10N на False на рабочей машине.
Ответы
Ответ 1
Прежде всего, я предполагаю, что у вас есть L10N и I18N в вашем settings.py
, потому что это значение по умолчанию. Разница, которую вы видите, вероятно, связана с тем, что вы получаете доступ к веб-сайту с двух разных компьютеров с двумя разными локалями. Django пытается форматировать данные для локали, о которой сообщает браузер.
Однако вы можете отключить это поведение. См. https://docs.djangoproject.com/en/dev/ref/settings/. Установите USE_L10N=False
и задайте различные параметры разделителя, указанные на связанной странице.
Ответ 2
Вы можете использовать этот альтернативный способ прямо в вашем шаблоне:
{% load l10n %}
{% localize off %}
{{ my_floatvar }}
{% endlocalize %}
или этот:
{% load l10n %}
{{ my_floatvar|unlocalize }}
Больше информации в https://docs.djangoproject.com/en/dev/topics/i18n/formatting/#controlling-localization-in-templates