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

yos*_*ssi 12 python django decimal

我使用的是python 2.6和django 1.27

我的模特

class Plan(models.Model):
     price = models.DecimalField(max_digits=5, decimal_places=2,default=0)
     .....
Run Code Online (Sandbox Code Playgroud)

在我的模板中我有

{{plan.price}}
Run Code Online (Sandbox Code Playgroud)

我的问题是在我的本地机器上我得到点用作分隔符,例如'2.54'
在我的生产机器上我得到'2,54' - 逗号用作分隔符.
我想在任何地方使用点.

在django docs 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
.
Run Code Online (Sandbox Code Playgroud)

解:

正如@Marcin指出
在生产机器上将USE_L10N设置为False.

Mar*_*éin 23

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

{% load l10n %}

{% localize off %}
{{ my_floatvar }}
{% endlocalize %}
Run Code Online (Sandbox Code Playgroud)

或者这个:

{% load l10n %}

{{ my_floatvar|unlocalize }}
Run Code Online (Sandbox Code Playgroud)

更多信息,请访问https://docs.djangoproject.com/en/1.8/topics/i18n/formatting/#controlling-localization-in-templates


Mar*_*cin 15

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

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