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

Django视图测试故障:新建用户无法登录、CBV创建视图测试不生成对象

问题1:自建test超级用户登录失败

排查&解决方案

  • 确认导入的用户模型是否正确:如果你项目自定义了用户模型,不要硬导入from django.contrib.auth.models import User,统一用from django.contrib.auth import get_user_model; User = get_user_model()来获取用户模型,避免导入错模型导致创建的用户不在你认证用的用户表中。
  • 检查认证后端配置:查看settings.py中的AUTHENTICATION_BACKENDS参数,如果不是默认的ModelBackend,比如配置了邮箱作为登录账号,那么client.login的入参要对应修改,比如改成self.client.login(email='test@test.fr', password='test'),不要传username参数。
  • 校验密码是否生效:在setUp中加一行print(self.user.check_password('test')),如果返回False说明密码没有正确设置,大概率是自定义用户模型的密码加密逻辑有问题。

问题2:登录成功后提交POST请求未创建Patient对象

你请求返回状态码200说明表单校验失败,CreateView校验不通过时会直接返回带错误信息的表单页,不会走创建逻辑,按以下步骤排查:

  • 修正POST请求的外键传参:Client.post的表单参数不能直接传模型实例,外键字段要传主键值,把你请求里的'pat_sit': patient_site改成'pat_sit': patient_site.pk。
  • 打印表单错误定位问题:在发送POST请求后加一行打印代码,就能直接看到表单校验失败的具体原因:
    print(response.context['form'].errors)
    
    常见原因包括:PatientForm的fields配置没有包含你传的参数、还有其他必填字段未传、字段规则校验不通过(比如pat字段格式不符合要求、pat_sit权限校验不通过等)。
  • 校验用户权限:确认你登录的用户有创建Patient对象的权限,如果视图除了login_required还加了权限校验装饰器,没有对应权限也会跳转或拒绝创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:08