13

Djangoは私にいくつかのランタイム警告を与えています(私が書かなかったコードについて)。

Djangoにスタックトレースを提供させるにはどうすればよいですか?これにより、これらの原因を確認できますか?

/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py:808: 
RuntimeWarning: DateTimeField received a naive datetime (2012-07-19 09:36:16.161479) 
while time zone support is active.
  RuntimeWarning
4

4 に答える 4

20

https://docs.djangoproject.com/en/stable/topics/i18n/timezones/#codeのドキュメントから

開発中に、設定ファイルに以下を追加することで、このような警告を例外に変えてトレースバックを取得できます。

import warnings
warnings.filterwarnings(
    'error', r"DateTimeField .* received a naive datetime",
    RuntimeWarning, r'django\.db\.models\.fields')
于 2012-10-09T18:44:57.427 に答える
2

ログフォーマッタを実装し、を使用して警告メッセージのトレースをログに戻すことができますtraceback.print_exception()

FormatExceptionのFomatterドキュメントを参照してください

これを参照することもできます。Djangoのロガーを使用して、指示したときにトレースバックをログに記録するにはどうすればよいですか?

于 2012-07-19T09:09:51.323 に答える
-2

これは、djangoでタイムゾーンサポートを有効にしたことを意味します。ただし、タイムゾーン情報が添付されていない日時オブジェクトを渡しました。

djangoのタイムゾーンをサポートする場合は、使用する日時オブジェクトがタイムゾーンに対応している必要があります。

タイムゾーンのサポートに関するドキュメントは、日時オブジェクトをtimzeonesを使用するオブジェクトに変換する方法を提供します。

于 2012-07-19T11:40:07.457 に答える
-3

Djangoのソースは、何が起こったのかを示しています。

def get_prep_value(self, value):
    value = self.to_python(value)
    if value is not None and settings.USE_TZ and timezone.is_naive(value):
        # For backwards compatibility, interpret naive datetimes in local
        # time. This won't work during DST change, but we can't do much
        # about it, so we let the exceptions percolate up the call stack.
        warnings.warn(u"DateTimeField received a naive datetime (%s)"
                      u" while time zone support is active." % value,
                      RuntimeWarning)
        default_timezone = timezone.get_default_timezone()
        value = timezone.make_aware(value, default_timezone)
    return value
于 2012-07-19T08:52:30.380 に答える