2013-07-18 15 views
6

Dane wyjściowe Django z sygnalizacją strefy czasowej najwyraźniej only applies when rendering a template. Czy istnieje sposób, aby uzyskać tę samą automatyczną konwersję do aktualnie aktywnej strefy czasowej dla odpowiedzi zwracających CSV lub JSON?Django Timezone Wsparcie poza szablonami

+0

Szukasz ustawienie Django? Lub jakiś konkretny kod Pythona? Być może spróbuj użyć pytz? –

+0

Nie, oczekuję tego samego zachowania automatycznej konwersji, co w szablonie, gdy wysyłam odpowiedź CSV lub JSON do użytkownika. – Tom

+0

Nie wierzę, że istnieje automatyczna konwersja poza szablonami ... musisz to zrobić ręcznie. –

Odpowiedz

1

Wygląda na to, że podstawową funkcją wywoływaną do konwersji datetimes w szablonach jest django.utils.timezone.template_localtime(). Tuż obok niego w źródle to kolejna funkcja użyteczności, localtime, który wygląda następująco:

def localtime(value, timezone=None): 
    """ 
    Converts an aware datetime.datetime to local time. 

    Local time is defined by the current time zone, unless another time zone 
    is specified. 
    """ 
    ... 

Więc może będzie działać następujące:

from django.utils.timezone import localtime, get_current_timezone 

... 

print localtime(obj.date_created, user.get_profile().timezone or get_current_timezone()) 
+0

Dobrze, spróbuję w pewnym momencie. Dzięki. – Tom