본문으로 바로가기

django, timezone에 관한..

category Frame Work/Django 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
반응형