def post(self, request, *args, **kwargs): send_sms_form = DynamicLoginForm(request.POST) re_dict = {} if send_sms_form.is_valid(): mobile = send_sms_form.cleaned_data['mobile'] # 随机生成数字验证码 code = generate_random(4, 0) re_json = send_single_sms(yp_apikey, code, mobile=mobile) if re_json['code'] == 0: re_dict['status'] == 'success' r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, charset='utf8', decode_responses=True) r.set(mobile, code) r.expire(str(mobile), 60 * 5) #设置验证码5分钟过期 else: re_dict['msg'] = re_json['msg'] else: for key, value in send_sms_form.errors.items(): re_dict[key] = value[0] return JsonResponse(re_dict)
def post(self, request, *args, **kwargs): # 验证图片验证码 send_sms_form = DynamicLoginForm(request.POST) # 保存前端是哪一个信息出错 re_dict={} if send_sms_form.is_valid(): # 获取手机号码 mobile = send_sms_form.cleaned_data["mobile"] # 随机生成数字验证码 code = generate_random(4, 0) # 发送验证码 re_json = send_single_sms(yp_apikey, code, mobile=mobile) # 判断是否发送成功 if re_json["code"] == 0: # 发送成功 re_dict["status"] == "success" # redis 数据库操作 r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, charset="utf8", decode_responses=True) r.set(str(mobile), code) r.exists(str(mobile), 60*5) else: # 发送失败 re_dict["msg"] = re_json["msg"] else: # 查看前端出错信息并保存到 re_dict={} for key, value in send_sms_form.errors.items(): re_dict[key] = value[0] return JsonResponse(re_dict)
def post(self, request, *args, **kwargs): # 把传递过来的信息都交给DynamicLoginForm会校验,主要是校验captcha字段 send_sms_form = DynamicLoginForm(request.POST) re_dict = {} # 如果图片验证码正确(大概理了一下验证流程:ajax前端先验证手机号->验证图片码->发送手机验证码) if send_sms_form.is_valid(): # 连接云片网,发送动态手机验证码 mobile = send_sms_form.cleaned_data['mobile'] # 随机生成数字验证码 code = generate_random(4, 0) re_json = send_single_sms(yp_apikey, code, mobile) # 如果发送成功,返回success if re_json['code'] == 0: re_dict['status'] = 'success' r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, charset='utf-8', decode_responses=True) r.set(str(mobile), code) r.expire(str(mobile), 60 * 5) # 验证码300秒后过期 # 如果发送失败,把云片网返回的错误信息交给前端,注意:云片网也会对手机号码进行校验 else: re_dict['msg'] = re_json['msg'] # 如果图片验证码不正确 else: # 循环错误,把所有的错误都添加进re_dict for key, value in send_sms_form.errors.items(): # value是个列表,所以要用索引 re_dict[key] = value[0] # JsonResponse返回给浏览器的是Content-Type: application/json,这样浏览器会自动反序列化 return JsonResponse(re_dict)
def post(self,request,*args,**kwargs): #验证手机号及图片验证码 send_sms_form=DynamicLoginForm(request.POST) re_dict={} if send_sms_form.is_valid(): mobile=send_sms_form.cleaned_data['mobile'] #随机生成验证码 code=generate_random(4,0) #调用云片网接口发送短信,传递apikey,验证码,手机号 res_json=send_single_sms(yunpian_apikey,code,mobile=mobile) if res_json['code']==0:#发送成功,将该手机号的验证码存入redis re_dict['status']='success' r=redis.Redis(host=REDIS_HOST,port=REDIS_PORT,db=0,charset='utf8',decode_responses=True) r.set(str(mobile),code) r.expire(str(mobile),5*60)#五分钟过期 else:#发送失败 re_dict['msg']=res_json['msg'] else: for key,value in send_sms_form.errors.items(): re_dict[key]=value[0] return JsonResponse(re_dict)
async def post(self, *args, **kwargs): ret_data = {} param = self.request.body.decode('utf8') param = json.loads(param) sms_form = SmsCodeForm.from_json(param) if sms_form.validate(): mobile = sms_form.data['mobile'] code = self.generate_code() result = send_single_sms(code, mobile) if not result: self.set_status(400) else: # 讲验证码写入到 redis 中 self.redis_conn.set(f'{mobile}_{code}', 1, ex=10 * 60) ret_data['send_sms'] = result else: self.set_status(400) ret_data = sms_form.errors return self.write(ret_data)
def post(self, request, *args, **kwargs): # 实例化验证码表单 send_sms_form = DynamicLoginForm(request.POST) re_dict = {} if send_sms_form.is_valid(): #当验证通过、1、会自动完成用户的验证码验证 #2、提取手机号 ajax只是给send_sms地址发送了手机号、和验证码、133行验证了图形验证码并通过、137行提取了手机号、 mobile = send_sms_form.cleaned_data['mobile'] #3、随机数验证码 code = generate_random(4, 0) #发送短信验证码给137行传过来的手机号 re_json = send_single_sms(yp_apikey, code, mobile=mobile) #如果是200发送成功 if re_json['code'] == 0: #修改字典的值 re_dict["status"] = "success" r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, charset='utf8', decode_responses=True) # 设置值 r.set(str(mobile), code) # 持久化 (设置验证码5分钟过期) r.expire(str(mobile), 300) else: #否则变成msg re_dict["msg"] = re_json["msg"] else: for key, value in send_sms_form.errors.items(): re_dict[key] = value[0] return JsonResponse(re_dict)
def post(self, request, *args, **kwargs): send_sms_form = DynamicLoginGetForm(request.POST) re_dict = {} if send_sms_form.is_valid(): mobile = send_sms_form.cleaned_data["mobile"] code = generate_random(4, 0) re_json = send_single_sms(yp_apikey, code, mobile=mobile) if re_json["code"] == 0: re_dict["status"] = "success" r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, charset="utf8", decode_responses=True) r.set(str(mobile), code) r.expire(str(mobile), 300) # 五分钟过期 else: re_dict["msg"] = re_json["msg"] else: for key, value in send_sms_form.errors.items(): re_dict[key] = value[0] return JsonResponse({re_dict})
def post(self, request): send_sms_form = DynamicLoginForm(request.POST) re_dict = {} if send_sms_form.is_valid(): mobile = send_sms_form.cleaned_data.get('mobile') code = generate_random(4, 0) sms_json = send_single_sms(settings.YP_APIKEY, code, mobile) if sms_json['code'] == 0: r = redis.Redis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, decode_responses=True) r.set(str(mobile), code) #设置过期时间 r.expire(str(mobile), 60 * 5) re_dict['status'] = 'success' else: re_dict['msg'] = sms_json['msg'] else: print(send_sms_form.errors.get_json_data()) for key, value in send_sms_form.errors.items(): re_dict[key] = value[0] return JsonResponse(re_dict)