gpt4 book ai didi

Django 表单更改密码

转载 作者:行者123 更新时间:2023-12-05 01:47:52 24 4
gpt4 key购买 nike

当用户成功登录并来到主页时,有一个“更改密码”链接用于更改密码。它显示一个更改密码的表单,其中包含旧密码、新密码和确认新密码三个输入框

这是我的代码。

表单.py

class reset_form(forms.Form):


oldpassword = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'type':'password', 'placeholder':'your old Password', 'class' : 'span'}))
newpassword1 = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'type':'password', 'placeholder':'New Password', 'class' : 'span'}))
newpassword2 = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'type':'password', 'placeholder':'Confirm New Password', 'class' : 'span'}))


def clean(self):
if 'newpassword1' in self.cleaned_data and 'newpassword2' in self.cleaned_data:
if self.cleaned_data['newpassword1'] != self.cleaned_data['newpassword2']:
raise forms.ValidationError(_("The two password fields did not match."))
return self.cleaned_data

views.py


def change_password(request):

if request.method == 'POST':
form = reset_form(request.POST)
if form.is_valid():
newpassword=form.cleaned_data['newpassword1'],
username=request.user.username
password=request.user.password

user = authenticate(username=username, password=password)
if user is not None:
user.set_password(newpassword)
user.save()
return HttpResponseRedirect('/reset/success/')

else:
return render(request, 'reset_password.html',{'error':'You have entered wrong old password','form': form})

else:
return render(request, 'reset_password.html',{'error':'You have entered old password','form': form})
else:
form = reset_form()
content = RequestContext(request, {'form': form})
return render(request, 'reset_password.html', content,)

使用正确的旧密码提交表单后,我收到此消息 您输入了错误的旧密码 我不知道为什么我会收到此错误消息,请帮助处理此代码

最佳答案

出于某种原因,您通过 request.user 使用存储在数据库中的密码字段,而不是他们实际输入到表单中的密码字段。数据库版本经过哈希处理,当您调用 authenticate 时,它会再次对其进行哈希处理,因此无法匹配。

您应该使用用户在表单中输入的值:

username = request.user.username
password = form.cleaned_data['oldpassword']

user = authenticate(username=username, password=password)

关于Django 表单更改密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com