Django 本地化

发布于 2024-12-12 00:43:25 字数 255 浏览 0 评论 0原文

我在 settings.py 文件中设置了以下内容:

USE_L10N = True
NUMBER_GROUPING = 3
THOUSAND_SEPARATOR = '#'
USE_THOUSANDS_SEPARATOR =True

但我的号码仍然打印出 12000.00。有人能指出我正确的方向吗?

(我使用的是 Django 1.3)

I have set the following in my settings.py file:

USE_L10N = True
NUMBER_GROUPING = 3
THOUSAND_SEPARATOR = '#'
USE_THOUSANDS_SEPARATOR =True

Yet my numbers are still printing out 12000.00. Can anyone point me in the right direction?

(I'm on Django 1.3)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恋你朝朝暮暮 2024-12-19 00:43:25

Django ( humanize ) 附带了一个辅助模板库,它有一个名为 intcomma 的过滤器,听起来它会做你想要的事情。

在模板中的用法:

{% load humanize %}
${{ value|intcomma }}

There's a helper template library that ships with Django (humanize) which has a filter called intcomma that sounds like it would do what you want.

Usage in a template:

{% load humanize %}
${{ value|intcomma }}
旧时光的容颜 2024-12-19 00:43:25

我找不到本地化不起作用的任何本地原因,因此最终使用 以下值,然后再传递给模板

def commify(n):
    if n is None: return None
    n = str(n)
    if '.' in n:
        dollars, cents = n.split('.')
    else:
        dollars, cents = n, None

    r = []
    for i, c in enumerate(str(dollars)[::-1]):
        if i and (not (i % 3)):
            r.insert(0, ',')
        r.insert(0, c)
    out = ''.join(r)
    if cents:
        out += '.' + cents
    return out

I couldn't find any locical reason why localisation won't work so ended up using the following on values before they are passed to a template

def commify(n):
    if n is None: return None
    n = str(n)
    if '.' in n:
        dollars, cents = n.split('.')
    else:
        dollars, cents = n, None

    r = []
    for i, c in enumerate(str(dollars)[::-1]):
        if i and (not (i % 3)):
            r.insert(0, ',')
        r.insert(0, c)
    out = ''.join(r)
    if cents:
        out += '.' + cents
    return out
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文