일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- restapi
- PYTHON
- API
- web
- 분리설정
- rest framework
- 서버구동
- migrate
- Django
- resful
- secretkey
- http
- virtual environment
- 서버설계
- restful
- 사용자인증
- server
- 웹
- 서버 만들기
- 장고
- djangorest
- 환경설정하기
- 파이썬
- SOAP API
- REST
- url
- django 시간 설정
- 환경분리
- restfulapi
- migrations
- Today
- Total
grape
[Django 03] - Django 한국 시간 설정 본문
Django 한국 시간 설정
Django에서의 기본 Time Zone(시간 설정)은 UTC이다. UTC는 협정 세계 시간으로 국제 표준시간이라 보면 된다. 국제 표준시간과 한국 시간의 시차는 + 09:00이다. 한국 시간이 03:00이면 국제 표준 시간은 12:00 인 것이다. 시간 설정이 중요한 이유는 기본 세팅 UTC로 하게 되면 DB 저장 시에도 UTC 시간으로 저장이 되기 때문이다.
ex) -
models.py
# app/models.py
from django.db import models
class TestModel(models.Model):
created_at = models.DateTimeField(auto_now_add = True) # 생성 시간
updated_at = models.DateTimeField(auto_now = True) # 수정 시간
웹에서 CRUD 작업을 하다 보면 보통 생성일자와 수정 일자 정보를 DB 스키마에 만들어서 저장하게 된다.
- 생성 일자: 최초 등록 시 에만 저장. 갱신되지 않는 정보
- 최종 수정 일자: 수정 시 갱신
Tip.
auto_now_add vs auto_now
- 수정일자: auto_now = True 사용
- auto_now = True는 django model의 데이터 값이 save 될 때마다 현재 날짜 & 시간으로 갱신된다.
-- > 주로 최종 수정 일자 field option으로 사용된다.
- 생성일자: auto_now_add = True 사용
- auto_now_add = True 는 django model의 데이터 값이 최초 저장(insert) 시에만 현재 날짜 & 시간으로 적용된다.
이렇게 model을 만들어 model의 instance를 만들게 되면 create_at or update_at 필드에는 기본적으로 UTC 시간이 들어가게 된다. 그래서 settings.py에서 TIME_ZONE 값과 USE_TZ 값을 변경해야 한다.
ex) -
settings.py
# settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Seoul' # 한국 시간 적용
USE_I18N = True
USE_L10N = True
USE_TZ = False # False 로 설정해야 DB에 변경 된 TIME_ZONE 이 반영 됨
위 코드에서 중요한 부분은 USE_TZ 값이다. USE_TZ 값을 False로 변경하는 이유는 models의 datetime 필드에도 변경된 TIME_ZONE 값을 적용시키기 위해서다. USER_TZ가 True 일 때는 templates, forms에서의 datetime에만 내가 설정한 TIME_ZONE이 적용된다. 따라서 models의 datetime에는 적용되지 않기 때문에 models에서는 기본값인 UTC 값이 적용된다. 따라서 models에 변경된 TIME_ZONE의 값을 적용시키고 싶으면 USE_TZ 값을 False로 변경해줘야 한다.
Tip.
Django 로 프로젝트 생성 시 기본적으로 처음에 시크릿 키 분리와 시간 설정을 미리 한 후 진행하는 것이 좋다. 필요시 User 커스텀까지 진행한 후 migrate 하는 것이 가장 이상적이다.
1. 시크릿 키 분리 & 시간 설정
2. 필요 시 User 모델 커스텀
3. 첫 migrate 실행
'웹 프로그래밍 > Django' 카테고리의 다른 글
[Django 02] - 시크릿 키(SECRET_KEY) 분리 설정 (0) | 2021.06.06 |
---|---|
[Django 01] - 동작 원리 및 기본 설정 (0) | 2021.05.27 |
Django로 RESTful API 서버 설계하기 (5) (0) | 2021.05.24 |
Django로 RESTful API 서버 설계하기 (4) (0) | 2021.05.23 |
Django로 RESTful API 서버 설계하기 (3) (0) | 2021.05.20 |