2016-07-14 9 views
1

In Django Tutorials gibt es einen Satz wie unten beschrieben.Django Einstellungen USE_TZ, TIME_ZONE und Django Rest Framework

TIME_ZONE

...

Wenn USE_TZ Falsch ist, dann ist dies die Zeitzone, in der Django alle Datetimes gespeichert werden. Wenn USE_TZ True ist, ist dies die Standardzeitzone, die Django verwendet, um Datumswerte in Vorlagen anzuzeigen und Datumsangaben in Formularen zu interpretieren.

...

Wenn django Rest Rahmen der naiven Datetime-Daten von der Anfrage erfolgt. Dann wird Django diese naive Datetime auf eine bewusste lokale Datetime der TIME_ZONE-Einstellung interpretieren? Und wenn es richtig ist, wie funktioniert es?

Vielen Dank im Voraus!

Antwort

3

Im Allgemeinen wird eine Eingabezeitzone in DRF während der Analyse der Anfrage in der serializer's DateTimeField (ähnlich wie Formularfelder) bestimmt.

Sie können das Format eines solchen Eingangs steuern, und es gibt sogar eine allgemeine Einstellung DATETIME_INPUT_FORMATS, die standardmäßig ['iso-8601'] ist.

Dies bedeutet im Grunde, dass die Eingabe die Zeitzone mit dem ISO-8601 Format und the field will generally be able to determine whether to create an aware or naive datetime object gemäß den Django Einstellungen weglassen und spezifizieren kann.

Es wird nicht ein naives datetime zu beachten wenn timezone Attribut zu konvertieren versucht, ist auf None, noch wird es versuchen, eine bewusst Zeitzone zu einem naiven zu konvertieren, wenn das Attribut nicht None ist.

Das Attribut ist standardmäßig TIME_ZONE, wenn USE_TZ True ist, andernfalls None; und kann auch explizit in einer Feldinitialisierung überschrieben werden.

Anmerkung:jemand sollte eine PR DRF senden, dieses Verhalten zu dokumentieren.

Für weitere Informationen siehe Django's time zone documentation

+1

Hallo ich wo Datum Zeit von DRF auch dieses Problem haben sich nicht bewusst zu Zeitzone konvertieren. Könnten Sie bitte den Schritt erklären, um das zu beheben? Ich konnte nicht verstehen, welche Einstellung ich verwenden sollte, um dies zu beheben. Vielen Dank. – Norak

+0

@Norak Die [docs] (https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#time-zones) sagen, dass ['USE_TZ = True'] (https: // docs. djangoproject.com/de/1.10/topics/i18n/timezones/#time-zones). Stellen Sie sicher, dass 'TIME_ZONE' ebenfalls auf den gewünschten Wert eingestellt ist. – tutuDajuju

+0

Ich habe es so eingestellt und es scheint, als ob es nicht funktioniert. Hier meine Einstellung mit der Zeitzone: 'USE_TZ = True'' TIME_ZONE = 'Asia/Tokyo'' – Norak

Verwandte Themen