# 点击找回密码跳转到指定页面页面,输入用户名以及验证码; # 验证成功之后,跳转重置密码页面; # 重置成功之后,跳转登录页面; 1.在登录页面点击找回密码,跳转指定页面 forgetpwd.html 2.forgetpwd.html页面表单验证 # edu_forms # 找回密码 class ForgetForm(forms.Form): # 验证码 captcha = CaptchaField() email = forms.EmailField(required=True) 3.跳转重置页面的视图以及urlconf # views.py class ResetView(View): """跳转重置密码页面""" def get(self,request, reset_code): pwd_reset = PwdResetForm() # 获取对应验证码的邮箱对象 record = EmailVerifyRecord.objects.filter(code=reset_code)[0] if record: # 获取邮箱,传到上下文到前端,设置一个隐藏的input框,与forms表单一起提交到后端 email = record.email return render(request, ‘password_reset.html‘, {‘email‘: email, ‘pwd_reset‘:pwd_reset}) else: # 没有获取到重置码 return render(request, ‘register.html‘) # urls.py # 跳转重置密码页面 url(r‘^reset/(?P<reset_code>.*)/$‘, ResetView.as_view(), name=‘user_reset‘), 4.页面成功跳转至password_reset.html,表单验证 # edu_forms # 重置密码 class PwdResetForm(forms.Form): password1 = forms.CharField(required=True) password2 = forms.CharField(required=True) 5.重置密码form提交处理 # views.py class ModifyPwdView(View): """重置密码""" def post(self, request): pwd_reset = PwdResetForm(request.POST) if pwd_reset.is_valid(): # 获取两次输入的密码 pwd1 = request.POST.get(‘password1‘, ‘‘) pwd2 = request.POST.get(‘password2‘, ‘‘) # 这里还要取到对应邮箱,从前端hidden属性标签下的email值获取 email = request.POST.get(‘email‘, ‘‘) if pwd1 != pwd2: return render(request, ‘password_reset.html‘, {‘pwd_reset‘:pwd_reset, ‘email‘:email, ‘msg‘:‘密码不一致!‘}) else: # 修改密码 user = UserProfile.objects.get(email=email) user.password = make_password(pwd2) user.save() return redirect(request, ‘login.html‘) else: return render(request, ‘password_reset.html‘, {‘pwd_reset‘:pwd_reset}) # urls.py # 重置密码 url(r‘^modify/$‘, ModifyPwdView.as_view(), name=‘modify_pwd‘) # password_reset.html <form id="reset_password_form" action="{% url ‘modify_pwd‘ %}" method="post"> {% csrf_token %} <ul> <li> <span class="">新 密 码 :</span> {{ pwd_reset.password1 }} <i></i> </li> <input type="hidden" name="email" value="{{ email }}"> <li> <span class="">确定密码:</span> {{ pwd_reset.password2 }} <i></i> </li> <li class="button"> <input value="提交" type="submit"> </li> </ul> </form>
时间: 2024-08-06 05:01:56