Django REST Framework API会忽略所有未知参数。这导致了几个问题。例如,当缺少模型过滤器时,客户会收到所有记录,而不是他们期望的单个记录。 每当API调用包含未知参数时,如何强制DRF返回 400错误请求?
(未知参数是[SerializerClass].Meta.fields
不在列表中的参数,或者[SerializerClass].Meta.model
在__all__
字段中的参数。)
答案 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
参数时的情况