2013-07-18 8 views
6

Djangos Zeitzone-bewusst Ausgabe scheinbar only applies when rendering a template. Gibt es eine Möglichkeit, die gleiche automatische Konvertierung in die derzeit aktive Zeitzone für Antworten zu erhalten, die CSV oder JSON zurückgeben?Django Timezone Unterstützung außerhalb von Vorlagen

+0

Suchen Sie eine django Einstellung suchen? Oder ein pythonspezifischer Code? Vielleicht versuchen Sie mit Pytz? –

+0

Nein, ich möchte das gleiche automatische Konvertierungsverhalten wie in einer Vorlage erhalten, wenn ich eine CSV- oder JSON-Antwort an einen Benutzer sende. – Tom

+0

Ich glaube nicht, dass es eine automatische Konvertierung außerhalb von Vorlagen gibt ... Sie müssen es manuell tun. –

Antwort

1

Es scheint, dass die zugrunde liegende Funktion zum Konvertieren von Datumsangaben in Vorlagen django.utils.timezone.template_localtime() heißt. Direkt daneben befindet sich in der Quelle ist eine weitere Hilfsfunktion, localtime, das wie folgt aussieht:

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. 
    """ 
    ... 

Also vielleicht funktionieren würde, wie folgt vor:

from django.utils.timezone import localtime, get_current_timezone 

... 

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

Schön, ich werde es irgendwann versuchen. Vielen Dank. – Tom