Перехватывает ли ModelSerializer сообщения «django.core.Exceptions.ValidationError» и превращает их в HTTP-ответ с кодом ⇐ Python

Программы на Python
Anonymous
Перехватывает ли ModelSerializer сообщения «django.core.Exceptions.ValidationError» и превращает их в HTTP-ответ с кодом

Сообщение Anonymous »

Предположим, это моя модель:

Код: Выделить всё

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()
И у меня есть этот сериализатор:

Код: Выделить всё

from rest_framework.serializers import ModelSerializer

class MyModelSerializer(ModelSerializer):
class Meta:
model = MyModel
fields = ["value"]
И это был мой набор представлений

Код: Выделить всё

from rest_framework.viewsets import ModelViewSet

class MyModelViewSet(ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
Мой вопрос: что должно произойти, когда для значения отправлено неправильное значение?
  • Должен ли он быть перехвачен DRF и преобразован в HTTP-ответ с кодом состояния 400?
  • Или это должно рассматриваться как обычное исключение и привести к сбою сервера?
Я спрашиваю об этом, потому что, когда я отправляю неверные данные в просматриваемый API DRF, вместо того, чтобы перехватывать ValidationError и возвращать ответ HTTP, DRF полностью останавливает приложение.
Это нормально или я делаю что-то не так?
Я не хочу снова повторять свою логику проверки в сериализаторе, так какой здесь правильный подход?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-and-turn

Вернуться в «Python»