[py][mx]django通過郵箱找回密碼
阿新 • • 發佈:2018-02-03
代碼 地址 技術 make .html pass word bubuko 重置
忘記密碼處理流程
直接上代碼
class ActiveView(View): # 主要功能是修改user_profile裏的is_active字段為1 def get(self, request, active_code): all_reocrds = EmailVerifyRecord.objects.filter(code=active_code) if all_reocrds: for record in all_reocrds: email = record.email user = UserProfile.objects.get(email=email) user.is_active = True user.save() else: # 如果激活鏈接不存在,則返回激活失敗 return render(request, "active_faild.html") return render(request, 'login.html') class ForgetPwdView(View): def get(self, request): forget_form = ForgetPwdForm() # 返回驗證碼form return render(request, 'forget_pwd.html', {'forget_form': forget_form}) def post(self, request): forget_form = ForgetPwdForm(request.POST) if forget_form.is_valid(): # 驗證email是否有效 email = request.POST.get('email', '') if UserProfile.objects.get(email=email): # 判斷用戶是否存在,然後發郵件 send_register_email(email, "forget") return HttpResponse("重置密碼鏈接已發送到您的郵箱,請查收後點擊重置.") else: return render(request, 'forget_pwd.html', {'msg': '用戶不存在', 'forget_form': forget_form}) class ResetPwdView(View): def get(self, request, active_code): all_reocrds = EmailVerifyRecord.objects.filter(code=active_code) if all_reocrds: # 如果鏈接有效 for record in all_reocrds: email = record.email # 得到email, emailsendrecord表中有對應的 return render(request, 'reset_password.html', {'email': email}) # 將email帶回, post到這個view: modify_pwd else: return HttpResponse("鏈接已失效...") # ResetPwdView的post獨立到ModifyPwdView裏, 因為ResetPwdView post地址不好獲取code class ModifyPwdView(View): def post(self, request): modify_form = ModifyPwdForm(request.POST) if modify_form.is_valid(): pwd1 = request.POST.get('password1', '') pwd2 = request.POST.get('password2', '') email = request.POST.get('email', '')#取出email,定位哪個用戶 if pwd1 != pwd2: # 如果密碼不一致, 則返回 return render(request, 'reset_password.html', {'msg': '密碼不一致', 'email': email}) user = UserProfile.objects.get(email=email) user.password = make_password(pwd2) user.save() return render(request, 'login.html') else: email = request.POST.get('email', '') return render(request, 'reset_password.html', {'email': email, 'modify_form': modify_form})
處理邏輯
[py][mx]django通過郵箱找回密碼