1、设置url
path('admain/<int:nid>/reset/',admain.admain_reset)
2、设置类
class AdmainResetModelForm(BootStrapModelForm):
confirm_password = forms.CharField(
label="确认密码",
# 不删除里面的内容
widget=forms.PasswordInput(render_value=True)
)
class Meta:
model = models.Admin
fields = [ "password", "confirm_password"]
widgets = {
"password": forms.PasswordInput(render_value=True)
}
def clean_password(self):
pwd = self.cleaned_data.get("password")
md5_pwd=md5(pwd)
exists=models.Admin.objects.filter(id=self.instance.pk,password=md5_pwd).exists()
if exists:
raise ValidationError("不能和以前的密码一致")
return md5(pwd)
# 钩子函数
def clean_confirm_password(self):
pwd = self.cleaned_data.get("password")
confirm = md5(self.cleaned_data.get("confirm_password"))
if confirm != pwd:
raise ValidationError("密码不一致")
return confirm
3、视图函数
def admain_reset(request,nid):
row_object=models.Admin.objects.filter(id=nid).first()
if not row_object:
return redirect('/admain/list')
title="重置密码-{}".format(row_object.username)
if request.method=="GET":
form=AdmainResetModelForm()
return render(request,"add.html",{"form":form,"title":title})
form=AdmainResetModelForm(data=request.POST,instance=row_object)
if form.is_valid():
form.save()
return redirect("/admain/list/")
return render(request,"add.html",{"form":form,"title":title})