Django PasswordResetConfirmView未设置新密码
我正在尝试使用自定义PasswordResetConfirmView模板 因为默认表单没有样式,我正在尝试在其中放置一个自定义类 这是我的Django PasswordResetConfirmView未设置新密码,django,Django,我正在尝试使用自定义PasswordResetConfirmView模板 因为默认表单没有样式,我正在尝试在其中放置一个自定义类 这是我的表单.py: from django.contrib.auth.forms import PasswordResetForm class UserPasswordChangeForm(PasswordChangeForm): def __init__(self, *args, **kwargs): super(UserPassword
表单.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
,天知道我怎么会找不到它,选错了表单。