Перехватывает ли 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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