일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 왕초보 파이썬 실행
- 파이썬 네이버 로그인
- Selenium 셀렉터잡기
- Uipath 설치방법
- vscode venv 설치
- 파이썬네이버부동산
- pycdas.exe
- 네이버부동산크롤링
- 커머스API
- UiPath
- 파이썬 환경설정
- 네이버 로그인 하기
- 파이썬 가상환경 설치방법
- 네이버 로그인 영수증 해결
- pywinauto 윈도우제어
- uipath 입문
- selenium
- 날짜 정규식
- 파이썬 가상환경 설치
- 네이버커머스API
- pycdc.exe
- 가상환경설치
- 네이버 로그인 캡챠해결
- pywinauto 윈도우
- Python
- Element is not clickable at point
- Uipath 기초
- 네이버매물크롤링
- pywinauto
- venv 설치
- Today
- Total
콘솔워크
python django timezone 설정 한국 서울 본문
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 실행