我正在構建一個應用程序,它可以爲位於世界各地的人們提供服務。
我正在使用Django-Rest-Framwork進行客戶端和服務器之間的通信。
所有DateTime值都以UTC格式保存到DB(我在settings.py中有USE_TZ = True
和TIME_ZONE = 'Greenwich'
)。Django-rest-framework時區感知渲染器/解析器
我會從用戶那裏得到他/她的當地時區。
要測試 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」字段在用戶的LOCAL時區中包含日期時間,該時區通過UnicodeJSONRenderer
到ModelSerializer
,然後保存到數據庫。但是,它們被保存爲,就好像它們在UTC中一樣。
此時我希望序列化程序(或解析器)將用戶的日期時間輸入視爲需要從「亞洲/耶路撒冷」轉換爲UTC前的日期時間,然後再保存到數據庫,因爲我執行了timezone.activate(pytz.timezone("Asia/Jerusalem"))
。
當通過JSONParser
在響應中解析數據時也是如此。
期望返回的JSON中的DateTime字段位於中間件中激活的時區中時,它們將作爲UTC返回。
如何輕鬆實現DRF?
你找到一個較新的版本(普通/ serializers.py)在我的應用程序工作解? – yakxxx
@yakxxx - 遺憾的是還沒有。現在我得到並返回格林尼治標準時間的日期時間值,並轉換爲本地時區在客戶端完成。 – OrPo
你可以發佈請求嗎?我想知道你在JSON中使用了哪種格式?你使用的是一個可識別時區的ISO 8601字符串嗎? – codingjoe