2013-05-05 7 views
8

Nach dem django 1.3 Upgrade 1,5 bis django Ich begann diese DeprecationWarnings während des Testlaufs zu sehen:Ausführlich deprecation Warnungen in Django

path_to_virtualenv/lib/python2.6/site-packages/django/http/Anfrage .py: 193: DeprecationWarning: HttpRequest.raw_post_data ist veraltet. Verwenden Sie stattdessen HttpRequest.body.

Ich habe innerhalb des Projekts für raw_post_data gesucht und nichts gefunden. Es wurde also nicht direkt im Projekt verwendet. Dann habe ich von Hand ging durch INSTALLED_APPS und fand, dass raven Modul noch raw_post_data verwendet und es war die Ursache, aber ..

Ist es möglich, die Ursache des DeprecationWarning während des Testlaufs zu sehen? Wie machen Sie diese Warnungen ausführlicher?

+0

Können Sie zeigen, wie Sie die Anfrage stellen? Es muss etwas auf die 'raw_post_data' -Eigenschaft zugreifen, obwohl dies nicht der Fall sein sollte. –

+0

Es ist einfach 'self.client.get (url, params)'. Ich bin mir ziemlich sicher, dass das nicht relevant ist, weil ich solche Anfragen in vielen Testmethoden mache, aber nur diese eine führt dazu, dass die Warnung erscheint. Ich nehme an, das liegt daran, dass etwas in libs importiert wurde, das die Warnung verursacht. Trotzdem danke. – alecxe

+1

Ich sehe. Importieren Sie etwas in 'libs', das mit Django oder Anfragen/Ansichten zusammenhängt? In Django 1.5 wird nicht auf die 'raw_post_data' -Eigenschaft zugegriffen, aber etwas könnte die Anfrage analysieren, indem es über alle Eigenschaften iteriert. Vielleicht "verspotten"? Oder etwas in 'libs'? –

Antwort

4

Dies ist aus a similar question entnommen.

Sie können die Warnmodule verwenden, um einen Fehler für DeprecationWarning zu melden.

vorübergehend den folgenden Ausschnitt an die Spitze Ihres urls.py Projekt hinzufügen:

import warnings 
warnings.simplefilter('error', DeprecationWarning) 

Die DeprecationWarning wird nun einen Fehler aus, so dass, wenn debug=True Sie die bekannte gelbe Django Fehlerseite mit dem vollständigen Zurückverfolgungs bekommen.

+1

Ja, ich habe das gesehen, aber leider funktioniert es nicht - wenn ich dies zu 'urls.py' oder' settings.py' hinzufüge, sehe ich während des Testlaufs überhaupt keine Warnungen. Ich werde versuchen, herauszufinden, warum und die Antwort akzeptieren, wenn es funktioniert. Danke für die Teilnahme. – alecxe

+0

viel Glück damit – SunnySydeUp

+0

Versuchen Sie, es zu Ihrem manage.py hinzuzufügen? –

20

Sie können Python warning control von Befehlszeilenoption gesetzt -W eine Ausnahme mit einem Zurückverfolgungs auf DeprecationWarning wie einmal anstelle der normalen einfache Warnung für Fehler zu erhöhen. Jede spezifische Warnung kann durch eine Nachricht, eine Kategorie, ein Modul, eine Zeile oder durch eine Kombination von ihnen gefiltert werden.

Beispiele:

python -W error:"raw_post_data has been deprecated" manage.py test 

python -W error::DeprecationWarning manage.py test 

python -W error:::django.http.request manage.py test 

Eine feine Filterung ist nützlich, wenn Sie alle Warnungen eines Typs zusammen mit Batch-Bearbeitung in vielen Dateien von einem großen Projekt beheben mögen.


Python 2.7 und höhere Ignoriert DeprecationWarning gewöhnlich, wenn sie nicht reanabled, z.B. durch -Wd Option oder durch die Umgebungsvariable export PYTHONWARNINGS="d". Das kann auf Entwicklungsmaschinen nützlich sein, aber nicht auf der Produktion.