引发异常并返回响应

问题描述 投票:3回答:1

我需要在Serializer的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响应?

django exception django-rest-framework django-serializer
1个回答
3
投票

你应该提出一个ValidationError

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

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

然后,如documentation所述,默认情况下会引发HTTP 400 Bad请求响应。

© www.soinside.com 2019 - 2024. All rights reserved.