장고 시간 다루기

소요 시간: 5분

오늘은 장고에서 시간을 다루는 방법에 대해 배워보았다. 프로젝트를 진행하면서 데이터 생성 날짜와 시간을 기록해야 하는 경우가 많기 때문에, 올바른 시간대를 설정하는 것이 얼마나 중요한지 다시금 깨닫게 되었다. 특히 한국에서 작업하고 있으니 한국 시간에 맞춰 설정하는 것이 필수적이다.


UTC와 한국 시간의 차이 이해하기

장고를 처음 사용할 때, 기본 설정은 UTC(협정 세계시)이다. 국제 표준 시간으로, 한국과는 9시간의 시차가 있다. 예를 들어, 한국 시간이 오후 5시 32분이면, UTC 시간은 오전 8시 32분이다. 이렇게 시간대를 잘못 설정하면 데이터베이스에 저장되는 시간도 UTC로 기록되기 때문에, 이후에 데이터를 조회할 때 혼란스러워질 수 있다.


Django 프로젝트 설정 수정하기

그래서 오늘은 Django 프로젝트의 설정 파일인 settings.py를 수정해보았다. 시간대를 한국 시간으로 바꾸려면, TIME_ZONE 값을 'UTC'에서 'Asia/Seoul'로 변경해야 한다. 그리고 USE_TZ 값을 True에서 False로 바꿔야 한다. 이 설정이 없으면 계속해서 UTC로 처리가 되니까 매우 중요하다.

# settings.py 수정
TIME_ZONE = 'Asia/Seoul'
USE_TZ = False


Naive와 Django.utils 방식의 차이 이해하기

설정을 변경한 후, 시간을 가져오는 방법도 달라진다. Naive 방식으로 시간을 가져오면, 다음과 같은 코드를 사용한다:

import datetime
now = datetime.datetime.now()

하지만 이 방법은 Django의 timezone을 고려하지 않기 때문에, 한국 시간으로 올바르게 처리되지 않는다. 그래서 django.utils 모듈의 timezone을 사용하는 방법으로 바꿔야 한다. 다음과 같이 작성하면 현재 시간을 한국 시간으로 올바르게 가져올 수 있다:

from django.utils import timezone
now = timezone.now()


오늘 배운 내용을 통해 시간대를 잘못 설정했을 때의 문제점과, Django에서 시간을 다루는 올바른 방법에 대해 이해할 수 있었다. 다음 프로젝트에서는 이 설정을 잘 기억해서, 데이터의 생성 날짜와 시간을 정확하게 기록할 수 있도록 해야겠다. 이처럼 기본적인 세팅이지만, 실제로 적용할 때는 많은 차이를 만들어낸다는 점이 인상적이었다.

장고 리스트