Fängt ein ModelSerializer „django.core.Exceptions.ValidationError“-Fehler ab und wandelt sie in eine HTTP-Antwort mit dePython

Python-Programme
Anonymous
 Fängt ein ModelSerializer „django.core.Exceptions.ValidationError“-Fehler ab und wandelt sie in eine HTTP-Antwort mit de

Post by Anonymous »

Sagen wir, das ist mein Modell:

Code: Select all

from django.core.exceptions import ValidationError

class MyModel(models.Model):
value = models.CharField(max_length=255)

def clean(self):
if self.value == "bad":
raise ValidationError("bad value")

def save(self):
self.full_clean()
return super().save()
Und ich habe diesen Serializer:

Code: Select all

from rest_framework.serializers import ModelSerializer

class MyModelSerializer(ModelSerializer):
class Meta:
model = MyModel
fields = ["value"]
Und das war mein Ansichtssatz

Code: Select all

from rest_framework.viewsets import ModelViewSet

class MyModelViewSet(ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
Meine Frage ist: Was soll passieren, wenn ein ungültiger Wert für value übermittelt wird?
  • Sollte er von DRF abgefangen und in eine HTTP-Antwort mit einem 400-Statuscode umgewandelt werden?
  • Oder sollte er wie eine normale Ausnahme behandelt werden und den Server zum Absturz bringen?
Ich frage das, denn wenn ich ungültige Daten in der durchsuchbaren API von DRF übermittle, stoppt DRF die Anwendung vollständig, anstatt den ValidationError abzufangen und eine HTTP-Antwort zurückzugeben.
Ist das normal, oder mache ich etwas falsch?
Ich möchte meine Validierungslogik im Serializer nicht noch einmal wiederholen. Was ist hier also der richtige Ansatz?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post