예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: views.py 프로젝트: jzy33/MxOnline
 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)
예제 #4
0
 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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
 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})
예제 #8
0
파일: views.py 프로젝트: DuJunT/org-website
    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)