django - 如何使任何参数未知的 Django REST Framework 请求失败?
问题描述
Django REST Framework API 忽略任何未知参数。这导致了几个问题。例如,当缺少模型过滤器时,客户端会收到所有记录,而不是他们期望的单个记录。每当 API 调用包含未知参数时,如何强制 DRF 返回400 Bad Request ?
[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
对象
免责声明:source
当我们在序列化程序中使用参数时,我不确定这些情况
推荐阅读
- firebaseui - 无法解析版本 4.0.1 中的符号“AuthUI”
- python - 如何为仅返回登录用户拥有的数据的查询集编写 Mixin?
- react-native - 同时实现 react-native-maps 和 react-native-google-places-autocomplete
- swift - 如何 grep 使用 RunLoop 的 macOS 控制台应用程序的标准输出
- spring - 模型无法转换 - spring boot 和 Criteria API Join 中的内部错误
- swift - 如何将图像数组从 Xcode 资产文件夹的文件夹添加到 ViewController?
- jquery - 使用按钮类型提交但不用于提交表单
- javascript - 自关闭一个 WebView 窗口 JavaScript
- javascript - 从包含输入字段作为其数据的表中检索输入字段的值?
- javascript - 对于字符串替换,For 循环无法按预期工作