代码之家  ›  专栏  ›  技术社区  ›  l0b0

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

  •  1
  • l0b0  · 技术社区  · 6 年前

    Django REST Framework API忽略任何未知参数。这导致了几个问题。例如,当缺少模型筛选器时,客户端接收的是所有记录,而不是预期的单个记录。 我怎样才能强迫DRF返回 400错误请求 每当API调用包含未知参数时?

    (未知参数不在 [SerializerClass].Meta.fields 如果这是一个列表,或者不在 [SerializerClass].Meta.model 如果是字段 __all__ .)

    1 回复  |  直到 6 年前
        1
  •  1
  •   JPG    6 年前

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

    # 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 序列化程序中的参数