2016-07-14 11 views
1

Djangoチュートリアルでは、以下のような文章があります。Django設定USE_TZ、TIME_ZONE、django rest framework

TIME_ZONE

...

USE_TZがFalseの場合、これはDjangoは すべての日付時刻を格納するする時間帯です。 USE_TZがTrueの場合、 Djangoがテンプレートにdatetimeを表示し、フォームに入力された datetimesを解釈するために使用するデフォルトのタイムゾーンです。

...

Djangoの残りのフレームワークが要求からの素朴なdatetimeデータを取ります。それでDjangoはこの素朴なdatetimeをTIME_ZONE設定のローカルな日時を認識するように解釈しますか?それが正しいのであれば、どのように機能しますか?

ありがとうございます!

答えて

3

一般的に、入力タイムゾーンは、serializer's DateTimeField(フォームフィールドと同様)のリクエストを解析中にDRFで決定されます。

このような入力のフォーマットを制御することができます。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の設定で示します。

それはtimezone属性がNoneに設定されている認識して場合にナイーブdatetimeを変換しようとしません、また属性がNoneでない場合、それはナイーブに認識してタイムゾーンを変換しようとします。

USE_TZがTrueの場合、属性のデフォルト値はTIME_ZONEです。それ以外の場合はNoneです。フィールドの初期化で明示的にオーバーライドすることもできます。

注:誰かがこの動作を文書化するためにDRFへのPRを送信する必要があります。

詳細情報についてはDjango's time zone documentation

+1

こんにちは、私はまた、DRFから日付時刻を意識したタイムゾーンに変換されていないこの問題を持って参照してください。これを修正するためのステップを親切に説明できますか?私はこれを解決するためにどのような設定を使うべきか理解できませんでした。ありがとうございました。 – 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

関連する問題