async def post(self, *args, **kwargs): return_data = {} params = self.request.body.decode('utf-8') params = json.loads(params) register_form = RegisterForm.from_json(params) # wtforms_json用猴子补丁实现的 if register_form.validate(): mobile = register_form.mobile.data code = register_form.code.data password = register_form.password.data # 验证码是否正确 redis_key = f'{mobile}_{code}' # redis查询的是内存非常快,所以没有必要去使用异步的redis。后期可以用aioredis实现一下异步的redis if not self.redis_conn.get(redis_key): self.set_status(400) return_data['code'] = '验证码错误或者失效' else: # 验证用户是否存在 try: existed_users = await self.application.objects.get(User, mobile=mobile) self.set_status(400) return_data['code'] = '用户已存在' except User.DoesNotExist as e: user = await self.application.objects.create(User, mobile=mobile, password=password) return_data['id'] = user.id else: self.set_status(400) for field in register_form.erros: return_data[field] = register_form[field][0] self.finish(return_data)
async def post(self, *args, **kwargs): param = self.request.body.decode('utf-8') param = json.loads(param) form = RegisterForm.from_json(param) account = form.account.data code = form.code.data password = form.password.data if form.validate(): if not self.redis_conn.get(f'{account}_{code}'): self.set_status(400) return self.json(JsonResponse(code=10006)) else: try: await self.application.objects.get(User, account=account) self.set_status(400) return self.json(JsonResponse(code=10007)) except User.DoesNotExist: user = await self.application.objects.create(User, account=account, password=password) return self.json( JsonResponse(code=1, data={'id': user.id})) else: return self.json(JsonResponse(code=10004, msg=form.errors))
async def post(self, *args, **kwargs): req_data = self.request.body.decode("utf-8") req_data = json.loads(req_data) nick_name = req_data.get("nick_name") regester_form = RegisterForm.from_json(req_data) res_data = {} if regester_form.validate(): phone_num = regester_form.phone_num.data code = regester_form.code.data password = regester_form.password.data key = "{}:{}".format(phone_num, code) if not self.redis_conn.get(key): self.set_status(400) res_data["content"] = "验证码错误或已失效" else: try: await self.application.objects.get( User, phone_num=phone_num ) self.set_status(400) res_data["content"] = "用于已存在" except User.DoesNotExist: user_obj = await self.application.objects.create( User, phone_num=phone_num, password=password, nick_name=nick_name ) res_data["id"] = user_obj.id res_data["content"] = "注册成功" else: res_data["content"] = regester_form.errors self.finish(res_data)
async def post(self, *args, **kwargs): re_data = {} params = self.request.body.decode("utf8") params = json.loads(params) # from_json为猴子补丁加入的新方法,解决json传输 register_form = RegisterForm.from_json(params) if register_form.validate(): mobile = register_form.mobile.data code = register_form.code.data password = register_form.password.data # 验证码是否正确 redis_key = "{}_{}".format(mobile, code) if not self.redis_conn.get(redis_key): self.set_status(400) re_data["code"] = "验证码错误或者失效" else: # 验证用户是否存在 try: existed_users = await self.application.objects.get(User, mobile=mobile) self.set_status(400) re_data["mobile"] = "用户已经存在" except User.DoesNotExist as e: user = await self.application.objects.create(User, mobile=mobile, password=password) re_data["id"] = user.id else: self.set_status(400) for field in register_form.erros: re_data[field] = register_form.errors[field][0] self.finish(re_data)
async def post(self, *args, **kwargs): re_data = {} param = self.request.body.decode('utf8') register_form = RegisterForm.from_json(json.loads(param)) if register_form.validate(): mobile = register_form.mobile.data code = register_form.code.data password = register_form.password.data # 验证验证码 redis_key = f'{mobile}_{code}' if not self.redis_conn.get(redis_key): self.set_status(400) re_data['code'] = '验证码错误或失效' else: # 验证用户是否存在 try: existed_user = await self.application.objects.get( User, mobile=mobile) re_data['mobile'] = '用户已经存在' except User.DoesNotExist as e: user = await self.application.objects.create( User, mobile=mobile, password=password) re_data['id'] = user.id else: self.set_status(400) re_data = register_form.errors self.write(re_data)
async def post(self, *args, **kwargs): param = self.request.body.decode('utf-8') param = json.loads(param) form = RegisterForm.from_json(param) account = form.account.data code = form.code.data password = form.password.data if account is None: return self.json(Result(code=10080, msg="参数有误, 不可缺少account参数")) if code is None: return self.json(Result(code=10080, msg="参数有误, 不可缺少code参数")) if password is None: return self.json(Result(code=10080, msg="参数有误, 不可缺少password参数")) if form.validate(): if not self.redis_conn.get(f'{account}_{code}'): return self.json(Result(code=10018, msg="验证码失效或不正确!")) else: try: existed_user = await self.application.objects.get( User, account=account) return self.json(Result(code=10020, msg='这个账号已经被注册!')) # 没有创建user表 except User.DoesNotExist: user = await self.application.objects.create( User, account=account, password=password) return self.json( Result(code=1, msg='账号注册成功', data={'id': user.id})) else: return self.json(Result(code=10090, msg=form.errors))
async def post(self, *args, **kwargs): re_data = {} params = self.request.body.decode('utf-8') params = json.loads(params) register_form = RegisterForm.from_json(params) if register_form.validate(): # 取出相关数据 mobile = register_form.mobile.data code = register_form.code.data password = register_form.password.data # 校验验证码 redis_key = f'{mobile}_{code}' if self.redis_conn.get(redis_key): # 对用户是否存在进行校验 使用 get 方法 不存在则报错 try: existed_user = await self.application.objects.get( User, mobile=mobile) self.set_status(400) re_data["mobile"] = "用户已存在" except User.DoesNotExist as e: user = await self.application.objects.create( User, mobile=mobile, password=password) re_data["id"] = user.id else: self.set_status(400) re_data['code'] = '验证码错误或者已失效!' else: self.set_status(400) for field in register_form.errors: re_data[field] = register_form.errors[field][0] self.finish(re_data)
async def post(self, *args, **kwargs): param = self.request.body.decode('utf8') re_data = {} param = json.loads(param) # 注意这里 register_form = RegisterForm.from_json(param) if register_form.validate(): mobile = register_form.mobile.data code = register_form.code.data password = register_form.password.data # 验证码是否正确 redis_key = "{}_{}".format(mobile, code) if not self.redis_conn.get(redis_key): self.set_status(400) re_data['code'] = "验证码错误" else: try: # 验证用户是否存在 existed_users = await self.application.objects.get( User, mobile=mobile) self.set_status(400) re_data['mobile'] = '用户已存在' except User.DoesNotExist as e: user = await self.application.objects.create( User, mobile=mobile, password=password) re_data['id'] = user.id else: self.set_status(400) for field in register_form.errors: re_data[field] = register_form[field][0] self.finish(re_data)
async def post(self, *args, **kwargs): res = {} data = self.request.body.decode('utf-8') data = json.loads(data) form = RegisterForm.from_json(data) if form.validate(): email = form.email.data code = form.code.data password1 = form.password1.data password2 = form.password2.data #验证两次输入密码是否正确 if password1 != password2: res['password1'] = '两次输入密码不一致' self.set_status(400) #验证验证码是否正确 #redis方式验证 #redis_key = "{}_{}".format(email, code) # if not self.redis_conn.get(redis_key): # print('验证码错误') # self.set_status(400) # res['code'] = '验证码错误或者失效' #mysql方式验证(验证码5分钟内有效) try: #按照最新的时间顺序取出该邮箱对应的第一条验证码 query = VerifyEmailCode.select().where( VerifyEmailCode.email == email).order_by( VerifyEmailCode.add_time.desc()) qs = await self.application.objects.execute(query) five_mins = datetime.now() - timedelta( hours=0, minutes=5, seconds=0) #5分钟有效期 if five_mins > qs[0].add_time: res['code'] = '验证码过期,请重新发送!' self.set_status(400) #比对失败 if qs[0].code != code: res['code'] = '验证码错误!' self.set_status(400) #比对成功 else: #创建用户,username置为email user = await self.application.objects.create( UserProfile, email=email, username=email, password=password1) res = { 'id': user.id, 'username': user.username, 'email': user.email, 'gender': user.gender, 'add_time': user.add_time #datetime不能直接用json序列化 } self.set_status(201) #创建成功,201 CREATED except VerifyEmailCode.DoesNotExist: res['code'] = '请发送验证码' self.set_status(400) else: self.set_status(400) for field in form.errors: res[field] = form.errors[field] self.finish(json.dumps(res, default=utils.json_serial))