You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Django模板中的小数点分隔符显示?

解决Django部署后数字出现千位分隔符的问题

这问题我之前帮好几个开发者排查过,大概率是本地化(locale)配置差异搞的鬼——本地开发环境和服务器的数字格式化规则不一样,导致显示效果出现区别。而且你用的intcoma过滤器本来是用来添加千位分隔符的,用它来去除当然没效果啦😂

下面是几个靠谱的解决办法,按优先级来:

1. 用stringformat过滤器强制格式化整数

这是最简单的快速解决方案,直接在模板里把数字强制转成无分隔符的整数格式:

{{ your_number_variable|stringformat:"d" }}

"d"表示十进制整数格式,不管当前locale怎么设置,都会输出纯数字无分隔符的样式。如果你的数字是浮点数,想转成整数再输出,可以先加floatformat:"0"再用stringformat:

{{ your_float_number|floatformat:"0"|stringformat:"d" }}

2. 调整Django的本地化配置

如果整个项目都不需要数字自动添加分隔符,可以修改settings.py里的本地化相关设置:

  • 把USE_L10N = True改成USE_L10N = False:这样Django就不会自动根据语言设置格式化数字、日期等内容了。
  • 或者更精准地配置数字格式:保持USE_L10N = True,但自定义数字格式。在项目根目录创建locale/<你的语言代码>/LC_NUMERIC文件(比如locale/en/LC_NUMERIC),里面定义无分隔符的格式:
千位分隔符 ""
小数点 "."

然后运行django-admin compilemessages编译本地化文件,重启服务器。

3. 自定义一个去除分隔符的过滤器

如果上面的方法都不适用,自己写个简单的过滤器最稳妥:

  1. 在你的app里创建templatetags文件夹(记得加__init__.py),新建custom_filters.py:
from django import template

register = template.Library()

@register.filter
def remove_separator(value):
    try:
        # 先转成整数,再转成字符串,自动去掉所有分隔符
        return str(int(value))
    except (ValueError, TypeError):
        # 处理非数字的情况,返回原内容
        return value
  1. 在模板里加载并使用:
{% load custom_filters %}
{{ your_number|remove_separator }}

4. 检查服务器的系统locale设置

有时候Django会继承服务器的系统locale配置,比如服务器的LC_NUMERIC设置的是带千位分隔符的规则。可以在服务器上运行locale命令查看当前设置,如果需要的话,修改服务器的locale(比如设置LC_NUMERIC=C),或者在Django的wsgi.py里手动设置:

import locale
locale.setlocale(locale.LC_NUMERIC, 'C')

内容的提问来源于stack exchange,提问作者Cesar Leonardo Ochoa Contreras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:46:30