Django的格式化系统能够使用为当前格式指定的格式在模板中显示日期、时间和数字。 locale . 它还处理窗体中的本地化输入。
访问相同内容的两个用户可能会看到日期、时间和数字以不同的方式格式化,这取决于他们当前区域设置的格式。
备注
要启用带千位分隔符的数字格式,必须设置 USE_THOUSAND_SEPARATOR = True
在您的设置文件中。或者,您可以使用 intcomma
若要格式化模板中的数字,请执行以下操作。
启用格式设置后,Django可以在表单中分析日期、时间和数字时使用本地化格式。这意味着,当猜测用户在表单上输入数据时使用的格式时,它会针对不同的区域尝试不同的格式。
备注
Django使用不同的格式将数据显示给它用来解析数据的那些格式。最值得注意的是,用于分析日期的格式不能使用 %a
(工作日简称) %A
(工作日全名) %b
(缩写月份名称) %B
(全名),或 %p
(AM/PM)。
要使表单字段能够本地化输入和输出数据,请使用 localize
论点::
class CashRegisterForm(forms.Form):
product = forms.CharField()
revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)
每当Django在模板中输出值时,它都会尝试使用区域设置特定的格式。
但是,使用本地化值可能并不总是合适的——例如,如果您输出的是设计为机器可读的JavaScript或XML,那么您将始终需要未本地化的值。您可能还希望在选定的模板中使用本地化,而不是在任何地方使用本地化。
为了更好地控制本地化的使用,Django提供了 l10n
包含以下标记和筛选器的模板库。
localize
¶强制本地化单个值。
例如:
{% load l10n %}
{{ value|localize }}
要禁用单个值的本地化,请使用 unlocalize
. 要控制模板大部分的本地化,请使用 localize
模板标签。
unlocalize
¶强制打印单个值而不进行本地化。
例如:
{% load l10n %}
{{ value|unlocalize }}
要强制本地化单个值,请使用 localize
. 要控制模板大部分的本地化,请使用 localize
模板标签。
返回数字的字符串表示形式 (int
, float
,或 Decimal
)与 localization settings 应用格式。
Django为许多地区提供了格式定义,但有时您可能希望创建自己的格式定义,因为您的地区不存在格式文件,或者您希望覆盖某些值。
要使用自定义格式,请指定首先放置格式文件的路径。 为此,请设置您的 FORMAT_MODULE_PATH
设置格式文件将存在的包,例如::
FORMAT_MODULE_PATH = [
"mysite.formats",
"some_app.formats",
]
文件不直接放在此目录中,而是放在名为区域设置的目录中,并且必须命名为 formats.py
. 注意不要在这些文件中放置敏感信息,因为如果将字符串传递给 django.utils.formats.get_format()
(由 date
模板过滤器)。
要定制英文格式,需要这样的结构:
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
在哪里? formats.py
包含自定义格式定义。例如::
THOUSAND_SEPARATOR = "\xa0"
使用不间断空格(Unicode 00A0
)作为千位分隔符,而不是默认的英文逗号。
有些区域设置使用数字的上下文相关格式,Django的本地化系统无法自动处理这些格式。
瑞士数字格式取决于正在格式化的数字类型。对于货币值,逗号用作千位分隔符,小数点用作小数点分隔符。对于所有其他数字,逗号用作十进制分隔符,空格用作千位分隔符。Django提供的区域设置格式使用通用分隔符、逗号表示小数,空格表示千位分隔符。
7月 22, 2024