поднять исключение и вернуть ответ - PullRequest
3 голосов
/ 21 апреля 2019

Мне нужно вызвать исключение внутри метода validate() сериализатора. Итак, я сделал что-то вроде ниже,

class SampleSerializer(serializers.ModelSerializer):
    class Meta:
        fields = '__all__'
        model = SampleModel

    def validate(self, attrs):
        foo_value = attrs['foo']
        if foo_value > 100:
            raise ValueError("foo_value cant be grater than 100")
        return attrs

Вызывает исключение, но как ошибка сервера .

Как вызвать исключение и безопасно вернуть какое-либо сообщение в ответ API?

1 Ответ

3 голосов
/ 21 апреля 2019

Вы должны поднять ValidationError вместо:

class SampleSerializer(serializers.ModelSerializer):
    class Meta:
        fields = '__all__'
        model = SampleModel

    def validate(self, attrs):
        foo_value = attrs['foo']
        if foo_value > 100:
            raise <b>serializers.ValidationError</b>("foo_value cant be grater than 100")
        return attrs

Затем, как описано в документации , HTTP 400 Bad запрашивает ответы по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...