You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework serializer curl提交时字段存空串无报错问题

问题1:curl请求提交后字段为空的原因

你在curl请求中只声明了Accept:application/json头,缺少了Content-Type: application/json请求头。DRF会根据Content-Type头来选择对应的解析器处理请求体:

  • 你提交的是JSON格式的请求体,但没有指定对应的Content-Type,DRF默认会使用表单解析器去解析这段JSON内容,自然解析不到title、description字段
  • 你的序列化器里给这两个字段配置了default=''的默认值,所以解析不到值的时候会直接用空字符串填充,不会触发报错
  • 可浏览API提交数据时会自动带上正确的Content-Type头,所以不会出现这个问题

修复方法:在提交待办的curl请求中新增请求头即可:

-H "Content-Type: application/json"

问题2:Serializer的create方法自动调用的逻辑

你用的ModelViewSet默认继承了CreateModelMixin、UpdateModelMixin等多个功能混入类,这些混入类已经封装好了完整的请求处理逻辑:

  • DRF的路由系统会把POST请求自动映射到ModelViewSet的create方法(来自CreateModelMixin)
  • CreateModelMixin的create方法内置逻辑为:获取请求数据 -> 传入指定的serializer_class做校验 -> 校验通过后调用serializer.save()
  • 序列化器的save方法会自动判断当前是新增还是更新操作:如果是新增场景,就会调用你重写的create方法,更新场景则调用update方法

整个流程都是DRF框架层封装好的,不需要你手动编写请求处理逻辑,只需要配置对应的序列化器、查询集即可。


内容的提问来源于stack exchange,提问作者indianwebdevil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 18:36:03