2016-07-14 3 views
1

В учебниках Django есть предложение, описанное ниже.Настройки Django USE_TZ, рамки TIME_ZONE и django rest

TIME_ZONE

...

Когда USE_TZ является False, то это временная зона, в которой Django будет хранить все DateTimes. Когда USE_TZ имеет значение True, это часовой пояс по умолчанию, который Django будет использовать для отображения данных в шаблонах и для интерпретации данных, вводимых в формы.

...

Когда основа Джанго остальное принимает наивные данные даты-времени от запроса. Тогда Django будет интерпретировать это наивное datetime для локального времени и времени TIME_ZONE? И если это правильно, как это работает?

Заранее благодарен!

ответ

3

Как правило, временная зона ввода определяется в DRF при разборе запроса в serializer's DateTimeField (аналогично полям формы).

Вы можете управлять форматом такого ввода, и существует даже общая настройка DATETIME_INPUT_FORMATS, которая по умолчанию равна ['iso-8601'].

Это означает, что входной сигнал может опускать и указывать часовой пояс с использованием формата ISO-8601 и the field will generally be able to determine whether to create an aware or naive datetime object в соответствии с настройками Django.

Он не будет пытаться преобразовать наивные datetime в курсе если timezone атрибут установлен в None, и не будет пытаться преобразовать осведомленный часовой пояс к наивным , если атрибут не None.

Атрибут по умолчанию равен TIME_ZONE, если USE_TZ имеет значение True, в противном случае это None; и также может быть явно переопределено в инициализации поля.

примечание:кто должен послать PR, чтобы ФПИ документировать это поведение.

Для получения дополнительной информации см Django's time zone documentation

+1

Здравствуйте У меня также есть эта проблема, где дата время от ФПИ не переоборудовать в TIMEZONE осознанным. Не могли бы вы объяснить шаг, чтобы исправить это? Я не мог понять, какую настройку я должен использовать, чтобы это исправить. Спасибо. – Norak

+0

@Norak [docs] (https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#time-zones) говорит, чтобы установить ['USE_TZ = True'] (https: // docs. djangoproject.com/en/1.10/topics/i18n/timezones/#time-zones). Не забудьте также установить «TIME_ZONE» в нужное значение. – tutuDajuju

+0

Я установил его таким образом и, похоже, не работает. Здесь моя настройка с часовым поясом: 'USE_TZ = True'' TIME_ZONE = 'Asia/Tokyo'' – Norak