为什么django使用逗号作为小数分隔符

时间:2013-10-24 13:00:19

标签: python django decimal

我正在使用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文档中 https://docs.djangoproject.com/en/1.2/ref/settings/#decimal-separator
它说“DECIMAL_SEPARATOR”选项是默认的点。

两台机器中的顺便说一句

In [2]: from django.conf import settings
In [3]: print settings.DECIMAL_SEPARATOR
.

SOLUTION:

正如@Marcin指出的那样 在生产机器上将USE_L10N设置为False。

2 个答案:

答案 0 :(得分:21)

您可以直接在模板上使用此替代方法:

{% load l10n %}

{% localize off %}
{{ my_floatvar }}
{% endlocalize %}

或者这个:

{% load l10n %}

{{ my_floatvar|unlocalize }}

https://docs.djangoproject.com/en/1.8/topics/i18n/formatting/#controlling-localization-in-templates

中的更多信息

答案 1 :(得分:14)

首先,我假设您在settings.py中启用了L10N和I18N,因为这是默认设置。您看到的差异可能是因为您从具有两种不同语言环境的两台不同计算机访问该网站。 Django尝试格式化浏览器报告的语言环境。

但是,您可以禁用此行为。见https://docs.djangoproject.com/en/dev/ref/settings/。设置USE_L10N=False,并设置链接页面上指定的各种分隔符选项。