Django开发的用户API使用Postman测试返回400 Bad Request错误如何解决?
Django 用户接口 400 Bad Request 错误原因汇总
通用排查项
- 请求头配置错误:POST请求传JSON参数时,必须在Postman的Headers里添加
Content-Type: application/json,否则Django REST Framework无法解析请求体,直接返回400 - 路由未注册:你提供的
core/urls.py中没有引入用户模块的路由,需要先在全局路由配置中添加以下代码,才能正常访问用户相关接口:
# core/urls.py 的 urlpatterns 列表中添加一行 path('api/users/', include('users.api.urls', namespace='users')),
- 请求方法错误:两个用户接口均为POST方法,使用GET、PUT等其他方法请求会直接报错。
用户注册接口特有问题
注册接口返回400均为序列化器校验不通过触发,校验规则如下:
- 缺少必填字段:必须同时传递
email、user_name、password三个参数,少任意一个都会校验失败 - 字段格式不符合要求:
email必须为合法邮箱格式,不符合规则会校验失败password长度不能小于8位,长度不足会直接返回错误user_name或email已存在:你的NewUser模型默认会将这两个字段设为唯一值,传递已注册的用户名/邮箱会触发唯一约束校验失败
- 字段名拼写错误:比如将
user_name写成username、password写成pwd这类拼写错误,会导致序列化器识别不到必填字段,返回400
你可以直接查看Postman返回的响应Body,视图已经将序列化器的具体错误信息返回,可以直接定位到具体是哪个字段出了问题。
登出Token拉黑接口特有问题
该接口的400均为异常捕获触发,常见原因如下:
- 请求体缺少
refresh_token字段:未传递该参数会触发KeyError,直接返回400 - 传递的
refresh_token无效:过期、被篡改、非当前项目生成的refresh token,都会导致Token实例化失败,返回400 - 未开启simplejwt黑名单功能:需要先在
settings.py的INSTALLED_APPS中添加rest_framework_simplejwt.token_blacklist,否则调用blacklist()方法会直接报错。
内容的提问来源于stack exchange,提问作者Yusuf Doğan
相关产品推荐
相关产品推荐

