안녕하세요. 공부하다가 잘 해결되지 않아 첫 질문 올려봅니다.ㅠ Django 1.7 버전

 
김명주

안녕하세요. 공부하다가 잘 해결되지 않아 첫 질문 올려봅니다.ㅠ

Django 1.7 버전에 Python 3.4 버전 사용하고 있습니다.

http://stackoverflow.com/questions/12626045/pytz-and-astimezone-cannot-be-applied-to-a-naive-datetime 를 참고해서 제가 코드를 작성한 부분입니다.

s = SessionStore()
s[‘user_id’] = ‘abby’
local_tz = pytz.timezone(‘Asia/Seoul’)
start_date = local_tz.localize(datetime(2015,2,26),is_dst=None)
s.set_expiry(start_date)
s.save()

그런데 mysql django_session 테이블에서 expire_date 가 한국 시간대로 변경되지 않고 계속 UTC 기준으로 입력됩니다. ㅠㅠ

settings.py 의 관련 부분입니다.

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SERIALIZER=’django.contrib.sessions.serializers.PickleSerializer’

LANGUAGE_CODE = ‘en-us’

TIME_ZONE = ‘Asia/Seoul’

USE_I18N = True

USE_L10N = True

USE_TZ = True

어디가 잘못된 걸까요..??

(밑에 stackoverflow 링크가 잘못 연결되었네요.;;;)

  • 김명주

    2015,2,26 이 이런식으로 들어갑니다ㅠㅠ

    남홍김

    USE_TZ를 쓰면 UTC기준으로 입력이 되는거죠. https://docs.djangoproject.com/en/1.7/ref/settings/#use-tz

    남홍김

    그리고 위에 링크 설명대로 하실 필요가 없어요. 장고 내부적으로 USE_TZ 세팅에 따라 변경 저장되니까요.

    김명주

    USE_TZ = False 로 하면
    can’t subtract offset-naive and offset-aware datetimes 에러가 뜨네요 ㅠㅠ

    김명주

    아무것도 안하고 그냥 set_expiry(300) 식으로 호출하면 UTC 기준으로 입력이 되던데 내부적으로 USE_TZ 세팅에 따라 변경 저장된다는게 무슨 말씀이신가요??

    남홍김

    제가 링크해드린 문서를 보시고, 관련 코드를 찾아 보세요.

    김명주

    네 알겠습니다. 답변 감사합니다

    김명주

    김남홍 USE_TZ = False 로 하고 s.set_expiry(300) 으로 호출하니까 한국 시간으로 5분 뒤로 잘 설정되네요.. 감사합니다 !!^^

Advertisements