你如何将 Django 日期选择器格式化为 ISO 8601?

时间:2021-03-30 18:19:15

标签: python django date-formatting

我们需要在整个 Django 站点中以 ISO 8601 (yyyy-mm-dd) 格式显示日期。我们从数据库中获取的日期显示正确,但日期选择器没有显示。

当我在 ubuntu 中运行 django 测试服务器时,日期选择器似乎使用操作系统设置的语言环境。当我在 Windows 中运行相同的代码时,它使用 dd/mm/yyyy。各种 input_formats 参数似乎以某种方式被覆盖,即使我已将它们设置在我能找到的任何地方。

无论客户端设置如何,是否可以强制日期选择器显示 yyyy-mm-dd?如果是这样,如何?

这是我们目前的代码。

forms.py

...
class DateInput(forms.DateInput):
    input_type = "date"
    input_formats = ["%Y-%m-%d"]
    options = {
        "format": "%Y-%m-%d",
        "autoclose": True
    }


class RegistrationForm(forms.Form):
    full_name = forms.CharField(max_length=255, required=True)
    preferred_name = forms.CharField(max_length=255, required=False)
    email = forms.EmailField(required=True)
    password = forms.CharField(
        max_length=255,
        required=True,
        widget=forms.PasswordInput,
        help_text=password_validation.password_validators_help_text_html(),
    )
    birth_date = forms.DateField(required=True, widget=DateInput, input_formats=["%Y-%m-%d"])
...

settings.py

...
LANGUAGE_CODE = "en-us"

TIME_ZONE = "UTC"

USE_I18N = True

USE_L10N = False

USE_TZ = True

DATE_INPUT_FORMATS = [
    '%Y-%m-%d'
]

DATETIME_INPUT_FORMATS = [
    '%Y-%m-%dT%H:%M:%S'
]

DATETIME_FORMAT = [
    '%Y-%m-%dT%H:%M:%S'
]
...

完整代码可在 GitHub 获得。

0 个答案:

没有答案