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
6
A
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
Szukasz ustawienie Django? Lub jakiś konkretny kod Pythona? Być może spróbuj użyć pytz? –
Nie, oczekuję tego samego zachowania automatycznej konwersji, co w szablonie, gdy wysyłam odpowiedź CSV lub JSON do użytkownika. – Tom
Nie wierzę, że istnieje automatyczna konwersja poza szablonami ... musisz to zrobić ręcznie. –