我正在构建一个应用程序,该应用程序将为位于世界各地的人们提供服务。
我正在使用 Django-Rest-Framwork 进行客户端和服务器之间的通信。
所有 DateTime 值都以 UTC 格式保存到数据库中(我有USE_TZ = True
并且TIME_ZONE = 'Greenwich'
在 settings.py 中)。
我将从用户那里获得他/她的本地时区。
为了测试DRF 的时区意识,我编写了这个带有固定时区的中间件:
import pytz
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
timezone.activate(pytz.timezone("Asia/Jerusalem"))
问题是:
我有一个案例,我从用户的“start_time”和“end_time”字段中获取包含用户本地时区中的日期时间,这些字段通过UnicodeJSONRenderer
到 aModelSerializer
然后保存到数据库。但是,它们会像在 UTC中一样保存。
在这一点上,我希望序列化程序(或解析器)将用户输入的日期时间视为需要从“亚洲/耶路撒冷”转换为 UTC 的日期时间,然后再保存到数据库,因为我执行了timezone.activate(pytz.timezone("Asia/Jerusalem"))
.
当数据通过JSONParser
.
虽然期望返回的 JSON 中的 DateTime 字段位于中间件中激活的时区中,但它们以 UTC 的形式返回。
如何在 DRF 中轻松实现这一目标?