给定模板 {{ foo }} {{ bar }} 和上下文 {'foo': Decimal('12.34'), 'bar': str(Decimal(' 12.34'))},模板呈现为 12,34 12.34。为什么结果不同?
请您参考如下方法:
因为 foo 是一个数字(Decimal 类型)并且根据您的应用程序的当前本地化进行格式化。在您设置的语言中,小数点分隔符是逗号。
另一方面,bar 是一个字符串,由 Python 格式化。当您将 str 应用于 Decimal 时,字符串表示不会考虑 Django 项目的本地化(因为它是 Python 方法,与 Django 无关)并且返回常见的“英语” 格式,带有一个点。
Django 只能对数字对象应用格式本地化(还有日期和时间以及其他次要的东西),而不是纯字符串。分析每个字符串以检查是否有数字以及是否需要格式化它会太重......
More information about Django localization in the official documentation .
