Django REST Framework API忽略任何未知参数。这导致了几个问题。例如,当缺少模型筛选器时,客户端接收的是所有记录,而不是预期的单个记录。 我怎样才能强迫DRF返回 400错误请求 每当API调用包含未知参数时?
(未知参数不在 [SerializerClass].Meta.fields 如果这是一个列表,或者不在 [SerializerClass].Meta.model 如果是字段 __all__ .)
[SerializerClass].Meta.fields
[SerializerClass].Meta.model
__all__
一个简单而基本的解决方案可能是,
# 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 对象
request.data
dict
免责声明: 我们用的时候我不太确定这些箱子 source 序列化程序中的参数
source