Django-rest-framework: Create devrait donner des exceptions beaucoup plus utiles lorsque TypeError se produit

Créé le 15 oct. 2015  ·  3Commentaires  ·  Source: encode/django-rest-framework

C'est le fléau de ma vie. La ligne 845 dans serializers.py doit être modifiée pour être beaucoup plus utile lorsqu'une TypeError se produit.

Si vous avez des méthodes personnalisées .save() et que quelque chose ne va pas, DRF ne vous donne que le message d'exception, qui peut être aussi utile que "X n'est pas itérable". DRF peut-il inclure la trace de l'erreur TypeError d'origine ou faire quelque chose de plus utile que de cracher un message par défaut et d'avaler l'exception d'origine ?

Commentaire le plus utile

Salut,
J'aimerais vraiment rouvrir ce sujet. C'est vraiment le pire aspect de l'utilisation de DRF dans toute application non triviale. Voici l'exception que j'obtiens :

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.

Je comprends que vous essayez d'être utile en affichant ce texte, mais en réalité, vous avalez toute l'exception, ce qui rend le débogage beaucoup plus difficile et supprime la plupart des informations réellement utiles. Veuillez considérer mon MR.

Tous les 3 commentaires

Je serais heureux d'examiner les demandes d'extraction, mais sinon, ce que nous devrions faire différemment ici n'est pas évident. Nous incluons le texte d'exception d'origine, mais ajoutons un peu de contexte supplémentaire pour expliquer pourquoi il est déclenché. Aucune idée si nous pouvons (ou voudrions) conserver la trace d'origine.

J'ai fait un PR, je pense que vous devriez afficher le retraçage original dans le message. Pour être honnête, je pense que vous ne devriez pas du tout saisir l'exception, mais je suppose que le message modifié pourrait être utile aux nouveaux utilisateurs. Cependant, il avale des informations d'erreur importantes sans raison réelle, qui doivent être modifiées.

Salut,
J'aimerais vraiment rouvrir ce sujet. C'est vraiment le pire aspect de l'utilisation de DRF dans toute application non triviale. Voici l'exception que j'obtiens :

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.

Je comprends que vous essayez d'être utile en affichant ce texte, mais en réalité, vous avalez toute l'exception, ce qui rend le débogage beaucoup plus difficile et supprime la plupart des informations réellement utiles. Veuillez considérer mon MR.

Cette page vous a été utile?
0 / 5 - 0 notes