2014-04-23 3 views
5

Django 및 Jinja2를 사용하는 경우 USE_TZ=True 인 경우에도 datetime 개체가 로컬 시간대로 자동 변환되지 않는 것으로 보입니다. 대신 값은 UTC로 유지됩니다.Jinja2 템플릿에서 DateTimeFields를 사용하여 현지 시간 표시 - Django

값에 localtime()을 실행하는 필터를 만들어이 문제를 해결할 수있었습니다.

그러나 DateTimeFields과 동일한 작업을 수행하는 방법을 잘 모르겠습니다. 템플릿에는 {{ field }}이 있는데 여기에서 필드는 DateTimeField이지만 어디에도 필터를 넣을 곳이 없습니다.

DateTimeField 값을 현재 시간대로 변환하는 가장 좋은 방법은 무엇입니까?

+0

를? 서버 또는 웹 브라우저? – user590028

+0

'timezone.get_current_timezone()'에 의해 반환 된 서버의 시간대 – user3033028

+0

아 ...이 링크를 확인하십시오. http://stackoverflow.com/questions/14657173/get-local-timezone-in-django – user590028

답변

4

감사하게도 이것은 비교적 쉬운 수정입니다. 장고 (설명서에 따른)는 다음을 수행하는 것이 template_localtime라는 기능을 제공한다. "값이 날짜이며, 필요한 경우 현지 시간으로 변환하는 경우 검사"

이 템플릿을 Jinja2 템플릿에 표시하면 템플릿 필터 또는 전역 함수가 만들어집니다. 이 예제에서는 모두 보여줍니다

from django.utils.timezone import template_localtime 

env = Environment(**kwargs) 
env.filters.update({ 
    'localtime': template_localtime, 
}) 
env.globals.update({ 
    'localtime': template_localtime, 
}) 

다음과 같이 다음 Jinja2 템플릿에서 다음을 사용할 수 있습니다 : 현재 시간대의

{{ item.date|localtime }} 
{{ localtime(item.date) }} 
관련 문제