Frame Work/Django
django, timezone에 관한..
j4ko
2021. 8. 14. 22:37
728x90
반응형
Example : Last_Login !
django의 user model은 last_login이라는 필드를 지원한다. 해당 유저가 마지막에 로그인한 시간을 기록하는 테이블이다. Simple JWT는 토큰을 발급할 때 TokenObtainPairSerializer를 이용하는데 이 Serializer를 타고 타고 들어가다 보면 django의 FrameWork의 update_last_login 메서드를 가져다 쓰고 있다.
# /django/contrib/auth/models.py
def update_last_login(sender, user, **kwargs):
"""
A signal receiver which updates the last_login date for
the user logging in.
"""
user.last_login = timezone.now()
user.save(update_fields=['last_login'])
이게 무슨 문제가 될까?
아래 이미지는 TokenObtainPairSerializer 를 이용해 로그인을 하고 last_login에 기록된 시간을 캡처한 것이다.
해당 글을 쓰면서 테스트한 시간은 한국 시간 기준으로 저녁 22:30 쯤 되고 있다. 하지만 위에 적용되는 시간은 한국시간이 아니다. 아무런 처리를 하지 않으면 UTC 기준으로 날짜가 찍히고 있는 것이다.
이는 아무런 설정을 적용하지 않았을 때 Django의 기본 설정값을 기준으로 찍히고 있는 결과이기도 하다. 한국시간으로 조정하려면 다음과 같이 Settings.py 파일에 한국 시간을 적용하자.
728x90
반응형