ユーザーがログアウトした後、Django は最後にアクティブ化されたタイムゾーンを覚えているようです。
- ユーザー投稿フォーム - UTC として解釈されるフォームの日時
- ユーザーは、オーストラリア/シドニーの優先タイムゾーンでログインします
- ユーザー投稿フォーム - オーストラリア/シドニーとして解釈されるフォームの日時
- ユーザーがログアウトする
- ユーザー投稿フォーム - TIME_ZONE が UTC に設定されていても、フォームの日時がオーストラリア シドニーとして解釈される
- サーバーを再起動し、ユーザー (まだログインしていない) がフォームを投稿する - UTC として解釈されるフォームの日時
私は持っている
TIME_ZONE = 'UTC'
USE_TZ = True
そしてミドルウェアとして:
class TimezoneMiddleware(object):
def process_request(self, request):
tz = request.session.get('django_timezone', '')
if tz:
timezone.activate(tz)
elif request.user.is_authenticated():
preferredTimezone = request.user.get_profile().preferredTimezone
timezone.activate(preferredTimezone)
activate
ソース内の関数に対するこのコメントに示されているように、Django は以前にアクティブ化された最後のタイムゾーンを覚えている可能性があると思います。
def activate(timezone):
"""
Sets the time zone for the current thread.
The ``timezone`` argument must be an instance of a tzinfo subclass or a
time zone name. If it is a time zone name, pytz is required.
"""
if isinstance(timezone, tzinfo):
_active.value = timezone
誰かがこれを確認できますか?これを解決する最善の方法は、ミドルウェアで を呼び出すelseステートメントを使用することdeactivate
でしょうか?