2012-07-19 6 views
9

Django gibt mir einige Laufzeitwarnungen (auf Code, den ich nicht geschrieben habe).Django: wie bekomme ich Stack-Traces für Laufzeitwarnungen

Wie kann ich Django dazu bringen, mir einen Stacktrace zu geben, damit ich sehen kann, was diese verursacht?

/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 
+1

Hat meine Antwort Ihre Frage beantworten? – dalore

+0

Hey über eine Antwort zumindest akzeptieren. – dalore

+0

Hallo, Entschuldigung, ich habe nur deine Antwort gesehen. – fadedbee

Antwort

14

Aus der Dokumentation bei: https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#code

Während der Entwicklung können Sie solche Warnungen in Ausnahmen drehen und eine Rückverfolgung erhalten, indem die folgenden Einstellungsdatei hinzufügen:

import warnings 
warnings.filterwarnings(
    'error', r"DateTimeField .* received a naive datetime", 
    RuntimeWarning, r'django\.db\.models\.fields') 
-3

Djangos Quelle sagt Ihnen, was gerade passiert ist:

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 
+1

Danke, aber ich weiß das. Ich suche nach was die Laufzeitwarnung verursacht hat. Dies ist nicht die einzige ... – fadedbee

-2

Das bedeutet, dass Sie Zeitzone Unterstützung in django aktiviert; Sie haben ihm jedoch ein Datetime-Objekt übergeben, dem keine Zeitzoneninformationen zugeordnet sind.

Wenn Sie die Zeitzonenunterstützung von django wünschen, sollten die verwendeten datetime-Objekte zeitzonenabhängig sein.

Die documentation on timezone support bietet eine Möglichkeit, Ihre Datetime-Objekte in solche mit Timzeones zu verwandeln.

+1

Danke, aber ich weiß das. Ich suche nach was die Laufzeitwarnung verursacht hat. Dies ist nicht die einzige ... – fadedbee