如何查找授权django用户当前使用的小数点格式?

时间:2017-01-06 21:34:48

标签: python django localization decimal-point

在Django 1.10& py 2.7如何找出当前授权用户的区域设置小数点,即当前用户是否使用','或'。'作为小数分隔符(应该是11,23还是11.23)?

我正在使用_thread_locals进行其他一些用户设置,一切正常,','与'。'在任何地方使用都是正确的 - 但我现在需要在一个使用过的视图中找到并且无法弄清楚...

BTW - 每个授权用户都有自己的语言环境,因此一个用户可以拥有','和另一个'。取决于用户区域设置。

/ Jens

3 个答案:

答案 0 :(得分:1)

这是我最终做的事情 - 完全赤裸裸,没有任何测试/检查/异常处理:

from importlib import import_module 
from django.utils.translation import get_language

fm = import_module('.formats', 'django.conf.locale.%s' % get_language())

try:
    return getattr(fm, 'DECIMAL_SEPARATOR')
except AttributeError:
    return '.'

答案 1 :(得分:0)

Django内置native localization模板和表单。 你在哪里确定这个?

在模板中:

  

{% load l10n %}{% localize on %}{{ value }}{% endlocalize %}

或表格形式:

  

要启用表单字段以本地化输入和输出数据,只需使用它   本地化论点:

class CashRegisterForm(forms.Form):
  product = forms.CharField()
  revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)

您必须启用本地化模块:

  

默认情况下禁用格式化系统。要启用它,必须在设置文件中设置USE_L10N = True

答案 2 :(得分:0)

from django.util.format import get_format #or get_format_lazy
from django.utils.translation import get_language

decimal_seperator = get_format('DECIMAL_SEPARATOR',get_language())

随意使用“ DATE_FORMAT”,“ THOUSAND_SEPARATOR”,“ NUMBER_GROUPING”等代替“ DECIMAL_SEPARATOR”

使用@ jens-lundstrom答案有时会出现导入错误。