首页 > 解决方案 > 如何使任何参数未知的 Django REST Framework 请求失败?

问题描述

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

[SerializerClass].Meta.fields(如果是列表,则未知参数不在其中,如果是,则在[SerializerClass].Meta.model字段中不存在__all__。)

标签: djangodjango-rest-framework

解决方案


简单和基本的解决方案之一可能是这样,

# 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当我们在序列化程序中使用参数时,我不确定这些情况


推荐阅读