def get(self, request): phone = request.GET.get('phone') if phone: mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$') res = re.search(mobile_pat, phone) if res: had_register = UserKeyProfile.objects.filter(phone=phone) if had_register: msg = '手机号已被注册' result = {"status": "402", "data": {"msg": msg}} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json,charset=utf-8") else: had_send = Code.objects.filter(phone=phone).last() if had_send: if had_send.add_time.replace(tzinfo=None) > (datetime.datetime.now()-datetime.timedelta(minutes=1)): msg = "距离上次发送验证码不足1分钟!" result = {"status": "403", "data": {"msg": msg}} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json,charset=utf-8") else: code = Code() code.phone = phone c = random.randint(1000, 9999) code.code = str(c) code.end_time = datetime.datetime.now() + datetime.timedelta(minutes=20) code.save() # 调用发送模块 code = Code.objects.filter(phone=phone).last().code yunpian = YunPian(settings.APIKEY) sms_status = yunpian.send_sms(code=code, mobile=phone) msg = sms_status return HttpResponse(msg) else: code = Code() code.phone = phone c = random.randint(1000, 9999) code.code = str(c) code.end_time = datetime.datetime.now() + datetime.timedelta(minutes=20) code.save() # 调用发送模块 code = Code.objects.filter(phone=phone).last().code yunpian = YunPian(settings.APIKEY) sms_status = yunpian.send_sms(code=code, mobile=phone) msg = sms_status return HttpResponse(msg) else: msg = "手机号不合法" result = {"status": "403", "data": {"msg": msg}} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json,charset=utf-8") else: msg = "手机号为空" result = {"status": "404", "data": {"msg": msg}} return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json,charset=utf-8")
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) #有效性验证失败会直接抛异常 serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(APIKEY) #生成随机验证码 code = self.generate_code() #发送验证码 sms_status = yun_pian.send_sms(code=code,mobile=mobile) #判断是否发送成功,成功返回0 if sms_status["code"] != 0: return Response({ "mobile":sms_status["msg"] },status=status.HTTP_400_BAD_REQUEST) else: #保存验证码 code_record = Verifycode(code=code,mobile=mobile) code_record.save() return Response({ "mobile":mobile },status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): #得到序列化期 serializer = self.get_serializer(data=request.data) #开始验证,会执行MSMSerializer的validate_mobile方法 serializer.is_valid(raise_exception=True) #前面已经做了三个验证 mobile = serializer.data["mobile"] code = self.generating() #集成云片网 yun_pian = YunPian("4f70824dde066067241393c80c291ea6") sms_status = yun_pian.set_msg(mobile, code) #看云片的文档,返回0是发生成功,其他字段不用管 if sms_status["code"] == 0: #保存到数据中(这个很重要) verifyCode = VerifyCode(code=code, mobile=mobile) #保存到数据库中 verifyCode.save() #发送成功 return Response({ "mobile": mobile, "msg": sms_status["msg"] }, status=status.HTTP_201_CREATED) else: #发送失败 return Response({ "mobile": mobile, "msg": sms_status["msg"] }, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, *args, **kwargs): # 获取serializer serializer = self.get_serializer(data=request.data) # 验证serializer的数据 serializer.is_valid(raise_exception=True) # 验证通过的数据保存在validated_data字典中 mobile = serializer.validated_data['mobile'] # 获得验证码 code = self.generate_code() # 初始化验证码发送工具 yunpian = YunPian(APIKEY) # 发送验证码 sms_re = yunpian.send_sms(code=code, mobile=mobile) # 验证码发送失败 if sms_re['code'] != 0: return Response({'mobile': sms_re['msg']}, status=status.HTTP_400_BAD_REQUEST ) # Create失败返回400(RESTFUL api的标准) # 短信发送成功(返回的字典中code=0) else: vcode = VerifyCode(code=code, mobile=mobile) vcode.save() return Response({ 'mobile': mobile }, status=status.HTTP_201_CREATED) # Create成功返回201(RESTFUL api的标准)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_dic = yun_pian.send_sms(code=code, mobile=mobile) print(sms_dic) if sms_dic["code"] != 0: return Response( { "msg": sms_dic["msg"], "data": { "mobile": mobile }, "code": 400 }, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response( { "msg": "验证码发送成功", "data": { "mobile": mobile }, "code": 200 }, status=status.HTTP_200_OK)
def create(self, request, *args, **kwargs): """ 重写create方法 用户登陆生成 :param request: :param args: :param kwargs: :return: """ serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] # 取出手机号 yunpan = YunPian(APIKEY) sms_status = yunpan.send_sms( code=self.generic_code(), mobile=mobile) # 发送手机短信 返回的状态吗 后面需要对状态吗进行判断 if sms_status['code'] != 0: return Response({"mobile": sms_status['msg']}, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=self.generic_code(), mobile=mobile) code_record.save() # 保存数据库 return Response({"mobile": mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): # 参数验证 serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) headers = self.get_success_headers(serializer.data) # 发验证码 mobile = serializer.validated_data.get('mobile') yun_pian = YunPian() code = self.generate_code() sms_status, msg = yun_pian.send_sms(code, mobile) # 返回响应 if sms_status: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response({ 'mobile': mobile, }, status=status.HTTP_201_CREATED, headers=headers) else: return Response({ 'mobile': msg, }, status=status.HTTP_400_BAD_REQUEST, headers=headers)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.send(code=code, mobile=mobile) if sms_status["code"] == 0: # 验证码发送成功 VerifyCode(code=code, mobile=mobile).save() return Response( data={ "mobile":mobile, }, status = status.HTTP_201_CREATED ) else: # 验证码发送失败 return Response( data={ "mobile":sms_status["msg"] }, status = status.HTTP_400_BAD_REQUEST )
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid( raise_exception=True ) #raise_exception设置为True,如果此处判断无效,会直接抛异常(返回400),不会进入后面的部分 mobile = serializer.validated_data[ "mobile"] #获取serializer验证数据中的mobile内容 yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile) if sms_status["code"] != 0: return Response( {"mobile": sms_status["msg"]}, status=status.HTTP_400_BAD_REQUEST) #如果code不等于0,则返回400 else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() #如果发送成功,将code和mobile保存到VerfyCode数据库中 return Response({"mobile": mobile}, status=status.HTTP_201_CREATED) #201表示请求成功 self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) # 获取手机号码 mobile = serializer.validated_data['mobile'] # 发送短信验证码 yun_pian = YunPian(APIKEY) # 创建实例 code = yun_pian.generate_code() sms_status = yun_pian.send_sms(code=code,mobile=mobile) # 云片 状态sms_status为0时发送成功 # 此处判定短信是否发送成功!,并给前端返回相应的状态码 if sms_status['code'] !=0: return Response({ 'mobile':sms_status['msg'] },status=status.HTTP_400_BAD_REQUEST) else: # 验证码发送成功后就保存VerifyCode对象到数据库,注意此处应该发送成功后保存 # 保存到的数据用于接下来的注册过程中对比认证 code_record = VerifyCode(code=code, mobile=mobile) code_record.save() # 给前端返回数据和状态码 return Response({ "mobile": mobile }, status=status.HTTP_201_CREATED)
def post(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) # 生成短信验证码 sms_code = "%06d" % random.randint(0, 999999) code={'code':sms_code} code=json.dumps(code) mobile = serializer.validated_data["mobile"] # 发送短信验证码 yun_pian = YunPian() sms_status = yun_pian.send_sms(code=code, mobile=mobile) if sms_status["result"] == 'success': # 保存短信验证码与发送记录 redis_conn = get_redis_connection('verify_codes') pl = redis_conn.pipeline() pl.setex("sms_%s" % mobile, 300, sms_code) pl.setex("send_flag_%s" % mobile, 60, 1) pl.execute() return Response({"mobile": mobile}, status=status.HTTP_201_CREATED) else: # 发送失败了 return Response({"mobile": sms_status["msg"]}, status=status.HTTP_400_BAD_REQUEST)
def post(self, request): mobile = request.POST.get('mobile', '') send_type = request.POST.get('send_type', 'register') if mobile: # 验证是否为有效手机号 mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$') res = re.search(mobile_pat, mobile) if res: # 生成手机验证码 code = VerifyCode() code.mobile = mobile code.send_type = send_type c = random.randint(1000, 9999) code.code = str(c) code.save() code = VerifyCode.objects.filter(mobile=mobile).last().code yunpian = YunPian(APIKEY) sms_status = yunpian.send_sms(code=code, mobile=mobile) msg = sms_status.msg return HttpResponse(msg) else: msg = '请输入有效手机号码!' return HttpResponse(msg) else: msg = '手机号不能为空!' return HttpResponse(msg)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] yun_pian = YunPian(APIKEY) #yun_pian.send_sms(code=self.generate_code(), mobile) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile ) if sms_status['code'] != 0: return Response({ 'mobile':sms_status['msg'] }, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response( {'mobile':mobile} , status=status.HTTP_201_CREATED) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] code = self.random_code() code_type = serializer.validated_data['code_type'] if code_type == 'register': send_yun = YunPian(API_KEY) re_dict = send_yun.send_code(code=code, mobile=mobile) else: send_yun = ResetYunPian(API_KEY) re_dict = send_yun.send_code(code=code, mobile=mobile) if not re_dict['code'] == 0: return Response({"mobile": re_dict['msg']}, status=status.HTTP_400_BAD_REQUEST) else: verify_code = VerifyCode(mobile=mobile, code=code, code_type=code_type) verify_code.save() headers = self.get_success_headers(serializer.data) return Response({"mobile": mobile}, status=status.HTTP_201_CREATED, headers=headers)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile) # if sms_status["code"] != 0: # return Response({ # "mobile":sms_status["msg"] # }, status=status.HTTP_400_BAD_REQUEST) # else: # code_record = verifyCode(code=code, mobile=mobile) # code_record.save() # return Response({ # "mobile":mobile # }, status=status.HTTP_201_CREATED) #模拟 code_record = verifyCode(code=code, mobile=mobile) code_record.save() return Response({'mobile': mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) # status 400 mobile = serializer.validated_data["mobile"] code = self.generate_code() yun_pian = YunPian(yunpian_apikey) sms_status = yun_pian.send_sms(code=code, mobile=mobile) if sms_status["code"] != 0: # 保存验证码 code_record = VerifyCode(code=code, mobile=mobile) code_record.save() context = { "mobile": sms_status["msg"] } return Response(context, status=status.HTTP_400_BAD_REQUEST) else: context = { "mobile": mobile } return Response(context, status.HTTP_201_CREATED) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def create(self, request, *args, **kwargs): """ 创建smsCode 时 使用 yunpian 1. :param request: :param args: :param kwargs: :return: """ print("on create new sms code resp ") serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile) if sms_status['code'] != 0: print("bad request") return Response({'mobile': sms_status['msg']}, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response({'mobile': mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): """ 重写CreateModelMixin下的create方法 """ print(request.data) serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile) if sms_status["code"] != 0: return Response({ "mobile": sms_status["msg"] }, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response({ "mobile": mobile }, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) # 发送验证码 code = self.__get_random_code() mobile = serializer.validated_data['mobile'] yun_pian = YunPian('b1d45af7f60a69881ec49ac396b93a7d') response = yun_pian.send_sms(code=code, mobile=mobile) if response.get('code', 'fail') == 0: # 发送成功 # 保存到数据库 verify_code = VerifyCode(code=code, mobile=mobile) verify_code.save() # api规范返回状态码 return Response( { 'mobile': mobile, 'msg': response.get('msg', '发送成功') }, status.HTTP_201_CREATED) else: # 发送失败, 返回错误信息 return Response( { 'mobile': mobile, 'msg': response.get('msg', '发送出错') }, status.HTTP_400_BAD_REQUEST)
def post(self, request): mobile = request.POST.get('mobile', None) password = request.POST.get('password', None) if mobile: # 验证是否为有效手机号 mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$') res = re.search(mobile_pat, mobile) if res: if password: # 生成手机验证码 c = random.randint(100000, 999999) code = VerifyCode.objects.create(code=str(c), mobile=mobile) code.save() code = VerifyCode.objects.filter(code=str(c)).first() yunpian = YunPian(APIKEY) sms_status = yunpian.send_sms(code=code, mobile=mobile) reg = UserProfile.objects.create(username=mobile, mobile=mobile, password=(make_password(password))) reg.save() msg = '发送成功,请查收!' return HttpResponse(msg) else: msg = '请输入账户密码!' return HttpResponse(msg) else: msg = '请输入有效手机号码!' return HttpResponse(msg) else: msg = '手机号不能为空!' return HttpResponse(msg)
def run(self, *args, **kwargs): yun_pian = YunPian(APIKEY) sms_status = yun_pian.send_sms(code=kwargs['code'], mobile=kwargs['mobile']) print('args={}, kwargs={}, sms_status={}'.format( args, kwargs, sms_status)) print(kwargs['code'], kwargs['mobile'])
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) # print(serializer) # print(SmsCodeViewSet.serializer_class) # 校验序列化器的 validate_mobile 方法 serializer.is_valid(raise_exception=True) # 取出 mobile mobile = serializer.data['mobile'] code = self.random_code() yp = YunPian() # sms_status {'code': 0, 'msg': '发送成功', 'count': 1, 'fee': 0.05, 'unit': 'RMB', 'mobile': '17635700440', 'sid': 26748214808} sms_status = yp.send_msg('17635700440', code) print(sms_status) if sms_status['code'] == 0: VerifyCode(mobile=mobile, code=code).save() return Response({ 'mobile': mobile, 'msg': sms_status['msg'], }, status=status.HTTP_201_CREATED) else: return Response({ 'mobile': mobile, 'msg': sms_status['msg'], }, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian() code = self.generate_code() yun_pian.send_sms(code, mobile=mobile) verify_code = VerifyCode(code=code, mobile=mobile) verify_code.save() return Response({"code": code}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] yun_pian = YunPian(YP_APIKEY) code = self.generate_code(4) re_msg = yun_pian.send_sms(code=code, mobile=mobile) if re_msg['code'] != 0: return Response({"mobile": re_msg['detail']}, status.HTTP_400_BAD_REQUEST) else: VerifyCode.objects.create(code=code, mobile=mobile) return Response({"mobile": mobile}, status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) yun_pian = YunPian(settings.APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms( code, mobile=serializer.validated_data["mobile"]) if sms_status["code"] != 0: return Response(sms_status['msg'], status=status.HTTP_400_BAD_REQUEST) else: VerifyCode(code=code, mobile=serializer.validated_data["mobile"]).save() return Response(sms_status["msg"], status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(API_KEY) _code = self.generate_code() result = yun_pian.send_sms(_code, mobile) if result['code'] != 0: return Response({"mobile": result["msg"]}, status=status.HTTP_400_BAD_REQUEST) else: record_code = VerifyCode(code=_code, mobile=mobile) record_code.save() return Response({"mobile": mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] code = self.generate_code() yun_pian = YunPian(APIKEY) sms_status = yun_pian.send_sms(mobile=mobile, code=code) if sms_status['code'] != 0: return Response({"mobile": [sms_status['msg']]}, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(mobile=mobile, code=code) code_record.save() return Response({"mobile": mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data["mobile"] yun_pian = YunPian(API_KEY) code = self.generate_code() sms_status = yun_pian.send_sms(code=code, mobile=mobile) # example sms_status = {'code': 0, 'msg': 'hello'} if sms_status["code"] != 0: return Response({"mobile": sms_status["msg"]}, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response({"mobile": mobile}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mobile = serializer.validated_data['mobile'] yun_pian = YunPian(APIKEY) code = self.generate_code() sms_status = yun_pian.sned_sms(code=code, mobile=mobile) if sms_status['code'] != 0: return Response({'mobile': sms_status['msg']}, status=status.HTTP_400_BAD_REQUEST)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid( raise_exception=True) # raise_exception=True,如果出现异常,直接抛异常 mobile = serializer.validated_data['mobile'] yun_pian = YunPian(api_key=settings.APIKEY) code = self.generate_code() sms_status = yun_pian.send_sms(code, mobile) if sms_status != 0: return Response({'mobile': sms_status['msg']}, status=status.HTTP_400_BAD_REQUEST) else: code_record = VerifyCode(code=code, mobile=mobile) code_record.save() return Response({'mobile': mobile}, status=status.HTTP_201_CREATED)