Wie können Validierungsfehlerreaktionen in DRF geändert werden?

9

Ich möchte die JSON ändern, die rest_framework oder django zurückgibt, wenn ein Validierungsfehler auftritt.

Ich werde eine meiner Ansichten als Beispiel verwenden, aber ich möchte die Fehlermeldungen für alle meine Ansichten ändern. Sagen wir also, ich möchte mit dieser Ansicht Benutzer anmelden und E-Mail und Passwort angeben. Wenn diese korrekt sind, wird access_token zurückgegeben.

Wenn ich nur ein Passwort poste, wird der Fehler 400 zurückgegeben:

%Vor%

und wenn Passwort und E-Mail nicht übereinstimmen:

%Vor%

Was ich will, wäre mehr wie:

%Vor%

Das ist jetzt meine Ansicht :

%Vor%

Ich kann auf serializer.errors zugreifen und sie ändern, aber es sieht so aus, als ob nur auf Feldfehler zugegriffen werden kann , wie auch in my erstellte Validierungsfehler geändert werden Validierungsmethode des Serializers?

Dies ist mein Serializer (es ist der selbe Serializer wie rest_framework.authtoken.serializers.AuthTokenSerializer), aber bearbeitet, also benötigt die Authentifizierung keinen Benutzernamen sondern E-Mail:

%Vor%

Oder vielleicht gibt es einen ganz anderen Ansatz? Ich werde wirklich für irgendwelche Ideen dankbar sein.

    
Matúš Bartko 28.01.2015, 16:19
quelle

1 Antwort

7

Der einfachste Weg, den Fehlerstil über die gesamte Ansicht in Ihrer Anwendung zu ändern, besteht darin, immer serializer.is_valid(raise_exception=True) zu verwenden und dann ein benutzerdefinierter Ausnahmebehandler , der definiert, wie die Fehlerreaktion erstellt wird.

    
Tom Christie 28.01.2015, 20:51
quelle