Django设置USE_TZ,TIME_ZONE和Django Rest框架

nex*_*doc 3 django datetime django-rest-framework django-timezone

在Django教程中,有一个句子描述如下。

时区

...

当USE_TZ为False时,这是Django将存储所有日期时间的时区。当USE_TZ为True时,这是Django用来在模板中显示日期时间并解释在表单中输入的日期时间的默认时区。

...

当django rest框架从请求中获取朴素的datetime数据时。然后Django会将此原始日期时间解释为知道TIME_ZONE设置的本地日期时间吗?如果是正确的,它如何运作?

提前致谢!

tut*_*uju 5

通常,在解析序列化器中的DateTimeField请求时(类似于表单字段),在DRF中确定输入时区。

您可以控制此类输入的格式,甚至还有一个DATETIME_INPUT_FORMATS默认设置为的常规设置['iso-8601']

这基本上意味着输入可以使用ISO-8601格式省略和指定时区,并且该字段通常将能够datetime根据您的Django设置确定是创建感知对象还是天真的对象

它不会试图将一个天真的转换datetime,以了解是否timezone属性被设置为None,也不会尝试将意识到时区转换成一个天真的,如果属性不是None

该属性默认为TIME_ZONEif USE_TZ为True,否则为None; 并且还可以在字段初始化中显式覆盖。

注意: 有人应该向PR发送PR,以记录此行为。

有关更多信息,请参见Django的时区文档。

  • 我是这样设置的,似乎它不起作用。这里我的时区设置:`USE_TZ = True` `TIME_ZONE = 'Asia/Tokyo'` (2认同)