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

Django自定义用户模型密码重置报错__init__缺user参数且密码无法保存

问题根源

你自定义的ResetPasswordForm构造方法要求必须传入user参数,但在views.py的get_context_data方法中,你手动实例化表单时写的是self.form_class(),没有传入必填的user参数,直接触发了参数缺失报错。

同时你手动覆盖context中form实例的操作,会导致Django父类视图原本的表单数据绑定、验证逻辑全部失效,提交的新密码不会被表单接收,这就是你之前新密码无法保存的原因。

修复步骤

  1. 修改views.py中的get_context_data方法,删除你手动添加的form实例赋值,父类PasswordResetConfirmView已经自动生成了带正确user参数、绑定了请求数据的表单实例,不需要你手动创建:
def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)
    if self.validlink:
        context.update({
            'validlink': True,
            # 删掉原来的'form': self.form_class() 这一行
            'static_json_text': static_textLanguage,
            'static_json_textGlobal': static_textGlobal
        })
    else:
        context.update({
            'validlink': False,
            'form': None,
            'static_json_text': static_textLanguage, 
            'static_json_textGlobal': static_textGlobal
        })
    return context
  1. 修复模板中的错误展示逻辑:你第二个密码输入框的错误提示判断条件还是key == 'new_password1',改成key == 'new_password2',否则新密码确认框的错误不会正常显示。

修复完成后表单即可正常接收参数、验证输入、保存新密码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:27:04