如何使任何带有未知参数的Django REST Framework请求失败?

时间:2018-12-14 01:05:45

标签: django django-rest-framework

Django REST Framework API会忽略所有未知参数。这导致了几个问题。例如,当缺少模型过滤器时,客户会收到所有记录,而不是他们期望的单个记录。 每当API调用包含未知参数时,如何强制DRF返回 400错误请求

(未知参数是[SerializerClass].Meta.fields不在列表中的参数,或者[SerializerClass].Meta.model__all__字段中的参数。)

1 个答案:

答案 0 :(得分:1)

一个简单而基本的解决方案可能就是这个

# serializer.py

class FooSerializer(serializers.ModelSerializer):
    class Meta:
        model = Foo
        fields = '__all__'


# views.py
def foo_view(request):
    serializer = FooSerializer(data=request.data)
    if set(request.data.keys()) - set(serializer.fields.keys()):
        raise Exception

注意:假设 request.data dict对象


免责声明:我不确定在序列化程序中使用source参数时的情况