DRF通用视图集的错误响应结构及信息获取键是什么?
Django REST Framework 通用视图集的标准错误响应结构
DRF 对通用视图集抛出的错误有统一的默认响应格式,核心通过以下几个键承载错误信息,分场景说明:
1. 通用HTTP错误(403、404、405等)
当触发权限校验失败、资源不存在、请求方法不允许这类错误时,响应返回对应4xx状态码,结构为:
{ "detail": "具体错误描述文本" }
比如普通用户通过CustomUserViewset访问其他用户数据时,会返回403状态码,detail值为"您没有权限执行此操作。",前端直接读取detail字段即可获取错误信息。
2. 序列化验证错误(400 Bad Request)
在创建或更新资源时,若序列化器校验字段失败,会返回400状态码,错误结构分两种情况:
- 字段级错误:每个错误字段作为键,对应的值是错误信息数组:
比如{ "title": ["该字段不能为空。"], "file": ["上传的文件格式不支持。"] }OCRDocumentViewset上传不符合要求的文件时,会返回这类结构,前端可以遍历字段展示对应错误。 - 非字段级全局错误:错误信息放在
non_field_errors键下:{ "non_field_errors": ["两次输入的验证码不一致。"] }
前端处理建议
- 先根据响应的HTTP状态码判断错误类型:
- 403/404/405等:直接提取
detail字段展示; - 400:优先检查是否有字段级错误,遍历展示;若存在
non_field_errors,则展示全局错误。
- 403/404/405等:直接提取
- 如果项目中自定义了DRF的异常处理类,错误结构可能会有调整,但默认情况下以上结构是通用的。
内容的提问来源于stack exchange,提问作者Vahid
相关产品推荐
相关产品推荐

