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

DRF Knox登录测试失败,排查无果寻求解决方案

问题原因及解决办法

问题出在用户创建时密码没有被正确哈希。你用get_user_model().objects.create()直接设置password字段时,存入的是明文密码,但Django的认证系统(包括knox的登录接口)会用哈希后的密码进行验证,所以导致凭据不匹配,返回400错误。

Postman能成功是因为实际环境中创建用户时,你应该用了正确的密码哈希方式(比如注册接口、后台创建流程自动处理了密码哈希)。

解决办法有两种:

  1. 使用create_user方法创建用户(推荐),该方法会自动处理密码哈希:
@classmethod
def setUpTestData(cls):
    cls.user = get_user_model().objects.create_user(
        email="test@email.com", password="testpass123"
    )
  1. 若坚持用create方法,需手动调用set_password并保存:
@classmethod
def setUpTestData(cls):
    cls.user = get_user_model().objects.create(
        email="test@email.com"
    )
    cls.user.set_password("testpass123")
    cls.user.save()

修改后重新运行测试,即可正常通过登录验证,返回200状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:34:51