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

Django密码重置页面报错__init__() got an unexpected keyword argument 'user'如何解决

问题原因

错误核心是PasswordResetConfirmView会向绑定的表单类传入user关键字参数,但你当前自定义的CaptchaPasswordResetForm继承了PasswordResetForm——这个类是用于发送重置邮件的表单,不接收user参数,只有用于重置确认页修改密码的SetPasswordForm才支持接收user参数。
另外你表单里的字段写法存在冗余错误:forms.forms.CharField多写了一层forms,会导致字段定义异常。

修复方案

第一步:修改forms.py代码

把CaptchaPasswordResetForm的父类替换为SetPasswordForm,同时修正字段的冗余写法:

from django.contrib.auth.forms import SetPasswordForm
from django import forms

class CaptchaPasswordResetForm(SetPasswordForm):
    new_password1 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={"class": "form-control", 'type':'password'}))
    new_password2 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={"class": "form-control", 'type':'password'}))

第二步:清理冗余配置(可选)

你已经在自定义的password_reset_view类里指定了form_class = CaptchaPasswordResetForm,urls.py里对应password_reset_confirm路径的form_class参数可以删除,避免重复定义冲突,修改后路径配置如下:

path('reset/confirm/<uidb64>/<token>/',
    password_reset_view.as_view(template_name="home/password_reset_form.html"), 
    name="password_reset_confirm"),

修改完成后重启服务即可正常访问密码重置确认页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:03