14

我正在使用 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
.

解决方案:

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

4

2 回答 2

27

您可以直接在模板上使用这种替代方式:

{% 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中的更多信息

于 2015-07-16T15:20:58.977 回答
16

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

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

于 2013-10-24T13:26:10.453 回答