Django PasswordResetConfirmView未设置新密码

Django PasswordResetConfirmView未设置新密码,django,Django,我正在尝试使用自定义PasswordResetConfirmView模板 因为默认表单没有样式,我正在尝试在其中放置一个自定义类 这是我的表单.py: from django.contrib.auth.forms import PasswordResetForm class UserPasswordChangeForm(PasswordChangeForm): def __init__(self, *args, **kwargs): super(UserPassword

我正在尝试使用自定义PasswordResetConfirmView模板

因为默认表单没有样式,我正在尝试在其中放置一个自定义类

这是我的
表单.py

from django.contrib.auth.forms import PasswordResetForm

class UserPasswordChangeForm(PasswordChangeForm):
    def __init__(self, *args, **kwargs):
        super(UserPasswordChangeForm, self).__init__(*args, **kwargs)

    new_password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={
        'class': 'form-control',
        'placeholder': 'Password',
    }))
    new_password2 = forms.CharField(label='Conform Password', widget=forms.PasswordInput(attrs={
        'class': 'form-control',
        'placeholder': 'Confirm Password',
    }))
from django.contrib.auth import views as auth_views

path('reset/<uidb64>/<token>/',
 auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html', form_class=UserPasswordChangeForm, success_url=reverse_lazy('password_reset_complete')),
 name='password_reset_confirm'),
下面是
url.py

from django.contrib.auth.forms import PasswordResetForm

class UserPasswordChangeForm(PasswordChangeForm):
    def __init__(self, *args, **kwargs):
        super(UserPasswordChangeForm, self).__init__(*args, **kwargs)

    new_password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={
        'class': 'form-control',
        'placeholder': 'Password',
    }))
    new_password2 = forms.CharField(label='Conform Password', widget=forms.PasswordInput(attrs={
        'class': 'form-control',
        'placeholder': 'Confirm Password',
    }))
from django.contrib.auth import views as auth_views

path('reset/<uidb64>/<token>/',
 auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html', form_class=UserPasswordChangeForm, success_url=reverse_lazy('password_reset_complete')),
 name='password_reset_confirm'),
从django.contrib.auth导入视图作为auth\u视图
路径(“重置//”,
auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html',form_class=UserPasswordChangeForm,success_url=reverse_lazy('password_reset_complete'),
name='password\u reset\u confirm'),

当我输入
新密码1
新密码2
时,它不会保存新密码,甚至不会显示ERORR。

您从错误的表单类继承
PasswordResetConfirmView
在继承
PasswordChangeForm
时使用表单类
SetPasswordForm
,该表单有一个用于旧密码的额外字段(此处没有意义,用户忘记了密码…)。将实现更改为正确继承:

from django.contrib.auth.forms import SetPasswordForm


class UserSetPasswordForm(SetPasswordForm):
    # your modifications
以及您的URL:

path('reset/<uidb64>/<token>/',
 auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html', form_class=UserSetPasswordForm, success_url=reverse_lazy('password_reset_complete')),
 name='password_reset_confirm'),
path('reset//'),
auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html',form_class=UserSetPasswordForm,success_url=reverse_lazy('password_reset_complete'),
name='password\u reset\u confirm'),

这很有效。我在
django\contrib\auth
文件夹中搜索了
forms.py
,天知道我怎么会找不到它,选错了表单。