Django-rest-framework: Create sollte viel nützlichere Ausnahmen geben, wenn TypeError auftritt

Erstellt am 15. Okt. 2015  ·  3Kommentare  ·  Quelle: encode/django-rest-framework

Das ist der Fluch meines Lebens. Zeile 845 in serializers.py muss geändert werden, um viel hilfreicher zu sein, wenn ein TypeError auftritt.

Wenn Sie benutzerdefinierte .save()-Methoden haben und etwas schief geht, gibt Ihnen DRF nur die Ausnahmemeldung aus, die so nützlich sein kann wie "X ist nicht iterierbar". Kann DRF vielleicht das Traceback des ursprünglichen TypeError enthalten oder _irgendetwas_ ein bisschen nützlicher machen, als eine Standardnachricht auszuspucken und die ursprüngliche Ausnahme zu schlucken?

Hilfreichster Kommentar

Hi,
Ich würde dieses Thema wirklich gerne wieder aufgreifen. Dies ist wirklich das Schlimmste an der Verwendung von DRF in einer nicht trivialen Anwendung. Hier ist die Ausnahme, die ich bekomme:

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

Ich verstehe, dass Sie versuchen, hilfreich zu sein, indem Sie diesen Text anzeigen, aber Sie schlucken wirklich die gesamte Ausnahme, was das Debuggen und Wegwerfen der meisten tatsächlich nützlichen Informationen erheblich erschwert. Bitte beachten Sie bitte meine MR.

Alle 3 Kommentare

Ich würde gerne Pull-Requests berücksichtigen, aber ansonsten nicht ersichtlich, was wir hier anders machen sollten. Wir fügen den ursprünglichen Ausnahmetext hinzu, fügen jedoch etwas zusätzlichen Kontext hinzu, um zu erklären, warum er ausgelöst wird. Keine Ahnung, ob wir das ursprüngliche Traceback erhalten können (oder wollen).

Ich habe eine PR gemacht, ich denke, Sie sollten den ursprünglichen Traceback in der Nachricht anzeigen. Um ehrlich zu sein, denke ich, dass Sie die Ausnahme überhaupt nicht abfangen sollten, aber ich denke, die geänderte Nachricht könnte für neue Benutzer hilfreich sein. Es schluckt jedoch ohne wirklichen Grund wichtige Fehlerinformationen, die geändert werden sollten.

Hi,
Ich würde dieses Thema wirklich gerne wieder aufgreifen. Dies ist wirklich das Schlimmste an der Verwendung von DRF in einer nicht trivialen Anwendung. Hier ist die Ausnahme, die ich bekomme:

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

Ich verstehe, dass Sie versuchen, hilfreich zu sein, indem Sie diesen Text anzeigen, aber Sie schlucken wirklich die gesamte Ausnahme, was das Debuggen und Wegwerfen der meisten tatsächlich nützlichen Informationen erheblich erschwert. Bitte beachten Sie bitte meine MR.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen