def check_password(self, request): # 接受session上的id值 id = request.session.get("id") # 到数据库查询用户的密码 password = Users.objects.get(pk=id).password # 判断用户输入的旧密码和数据库的密码是否一致 if password != set_password(self.cleaned_data.get('password')): # 密码不一致 self.add_error('password', '旧密码错误') return False else: return True
def post(self, request): # 接收参数 data = request.POST # 验证数据的合法性 login_form = LoginModelForm(data) if login_form.is_valid(): # 验证成功 # 数据合法 password = login_form.cleaned_data['password'] username = login_form.cleaned_data.get('username') password = set_password(password) # 更新用户密码 Users.objects.filter(username=username).update(password=password) # 操作数据库 # 返回到登录 return redirect('用户:忘记密码') else: # 合成响应 # 验证不通过,返回注册页面 # 进入到注册页面 return render(request, 'user/forgetpassword.html', {'form': login_form})
def clean(self): # # 验证手机号 # 从清洗的数据中的得到手机号 username = self.cleaned_data.get('username') try: # 如果 清洗的数据中有手机号和数据库的一致 user = Users.objects.get(username=username) except Users.DoesNotExist: # 不一致,提示错误 raise forms.ValidationError({'username': '******'}) # 验证密码 # 空字符串是因为创建的加密方法需要必须传值 password = self.cleaned_data.get('password', '') # 如果 清洗的数据中有密码和数据库的不一致,提示错误信息 if user.password != set_password(password): raise forms.ValidationError({'password': '******'}) # 返回所有清洗后的数据 self.cleaned_data['user'] = user return self.cleaned_data
def post(self, request): # 完成用户信息的注册 # 接收参数 # 渲染提交的数据 data = request.POST # 验证表单参数合法性 用表单来验证 form = RegisterModelForm(data) if form.is_valid(): # 操作数据库 cleaned_data = form.cleaned_data # 创建一个注册用户 # 得到清洗过的数据 # user = Users() # user.username = cleaned_data.get('username') # user.password = set_password(cleaned_data.get('password')) # user.save() username = cleaned_data.get('username') password = set_password(cleaned_data.get('password')) # 将数据保存到数据库 Users.objects.create(username=username, password=password) return redirect('用户:用户登录') else: # 错误信息提示 return render(request, self.template_name, context={'form': form})
def post(self, request): # 接收用户传过来的参数 data = request.POST # 创建一个对象来检查信息的合法性 form = ResetPassWordForm(data) # 验证数据的合法性 if form.is_valid(): # 数据合法 # 接收清洗后的数据 id = request.session.get('id') if form.check_password(request): # 密码一致,将数据写入到数据库当中 # 将密码加密 password1 = set_password(form.cleaned_data.get('password1')) # 将密码写到数据库 Users.objects.filter(pk=id).update(password=password1) # 跳转到登录页面 return redirect('用户:用户登录') else: return render(request, 'user/password.html', {"form": form}) else: # 数据不合法, 继续修改 return render(request, 'user/password.html/', {"form": form})