前提・実現したいこと
Djangoのミドルウェア内で、ログイン済みのユーザーであれば、最終ログイン日時を取得できるような仕様を実装しようとしています。
発生している問題・エラーメッセージ
Djangoデフォルトの管理画面では日本時間での最終ログイン時間が正しく取得できているにも関わらず、
下記のコードを実行すると、print(request.user.last_login)の結果として、ぴったり9時間遅れのおそらくアメリカ時間が表示されてしまう。
これを日本時間を取得するにはどのようにすればいいのでしょうか?
settings.pyの該当箇所は
TIME_ZONE = 'Asia/Tokyo'
のようにしています。
該当のソースコード
Python
1class SampleMiddleware(object): 2 3 4 def __init__(self, get_response): 5 self.get_response = get_response 6 7 def __call__(self, request): 8 self.process_request(request) # 前処理 9 response = self.get_response(request) # ビューの処理 10 self.process_response(request, response) # 後処理 11 12 return response 13 14 def process_request(self, request): 15 print(request.user.last_login) 16 17 def process_response(self, request, response): 18 pass 19
補足情報(FW/ツールのバージョンなど)
Django==2.2.9
Python 3.7.6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。