Zawsze umieszczam serializers w oświadczeniu try, które zwraca false, gdy ma nieprawidłowy format.

Lubię to:

Przykładowy model:

from rest_framework import serializers

class CommentSerializer(serializers.Serializer):
    email = serializers.EmailField()
    content = serializers.CharField(max_length=200)
    created = serializers.DateTimeField()

Przykładowy kod:

try:
    testSerializer(data = b).is_valid()
except:
    return  HttpResponse("Invalid data type input)

Teraz chcę return parametry były nieprawidłowo wprowadzone:

Parametry: Nazwa, wiadomość e-mail była wprowadzana w niewłaściwy typ

1
Chau Loi 22 listopad 2020, 16:30

1 odpowiedź

Najlepsza odpowiedź

Możesz uzyskać dostęp do .errors, jest to słownik, który mapuje nazwy pól do listy błędów:

from django.http import JsonResponse

serializer = testSerializer(data=b)
if not serializer.is_valid():
    return  JsonResponse({'errors': serializer.errors}, status_code=400)

Należy pamiętać, że .is_valid() robi nie podnieść wyjątek, zwraca logiczne, że jest True W przypadku ważności wejścia i False inaczej. Możesz podnieść wyjątek z serializatorem za pomocą {X3}} Parametr [DRF-DOC], a następnie podniesie błąd Http400.

1
Willem Van Onsem 22 listopad 2020, 13:34