世界中のさまざまな場所にいる人々に役立つアプリを構築しています。
クライアントとサーバー間の通信に Django-Rest-Framwork を使用しています。
すべての DateTime 値は UTC として DB に保存されます (私はsettings.py にUSE_TZ = True
ありTIME_ZONE = 'Greenwich'
ます)。
ユーザーのローカルタイムゾーンから取得します。
タイムゾーン認識について 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
し、DB に保存する場合があります。ただし、それらはUTC であるかのように保存されます。
この時点で、シリアライザー (またはパーサー) がユーザーからの日時入力を日時として処理することを期待しますtimezone.activate(pytz.timezone("Asia/Jerusalem"))
.
を介して応答でデータが解析される場合も同様JSONParser
です。
返された JSON の DateTime フィールドは、ミドルウェアでアクティブ化されたタイムゾーンにあると予想されますが、UTC として返されます。
DRFでそれを簡単に達成するにはどうすればよいですか?