Djoser登录接口/api/v1/token/login返回400 Bad Request错误求助
排查解决步骤
- 先修正你前端错误捕获代码的拼写错误:你写的
err.reponse少了一个s,正确应为err.response,改完后就能在控制台或页面错误提示里拿到后端返回的具体报错信息,直接定位问题。 - 确认前端提交的
formData字段符合djoser默认要求:djoser的/token/login/接口默认要求提交username和password两个字段,检查你前端表单的字段名是不是写错了(比如写成email、pwd等不匹配的名称),字段不匹配会直接触发400错误。 - 如果你是用邮箱作为登录账号,需要在
settings.py中添加djoser配置:
DJOSER = { 'LOGIN_FIELD': 'email', }
同时要确保你使用的用户模型中设置了USERNAME_FIELD = 'email'。
- 用接口测试工具(如Postman、curl)直接调用
http://127.0.0.1:8000/api/v1/token/login/,传入正确的账号密码参数,确认接口本身能正常返回token:- 如果工具调用能正常返回,说明问题出在前端参数提交环节,检查
formData是否正确序列化,有没有将参数嵌套在多余层级里,同时确认axios是否配置了正确的baseURL指向django服务地址。 - 如果工具调用也返回400,检查你的用户模型、djoser配置是否存在错误,同时看django服务的控制台有没有更详细的报错日志。
- 如果工具调用能正常返回,说明问题出在前端参数提交环节,检查
- 额外检查:你当前
settings.py中没有配置REST_FRAMEWORK的认证类,建议补充配置:
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', ), }
内容的提问来源于stack exchange,提问作者Sheyzi Silver
相关产品推荐
相关产品推荐

