Example #1
0
    def post(self, request, *args, **kwargs):
        # 发送验证码的form
        send_sms_form = DynamicLoginForm(request.POST)
        re_dict = {}
        if send_sms_form.is_valid():
            mobile = send_sms_form.cleaned_data["mobile"]
            code = generate_random(6)  # 生成验证码
            re_json = send_single_sms(code, mobile)  # 发送验证码
            if re_json["code"] == 0:  # 如果发送成功
                re_dict["status"] = "success"
                # 连接redis
                r = redis.Redis(host=REDIS_HOST,
                                port=REDIS_PORT,
                                db=0,
                                charset="utf-8",
                                decode_responses=True)
                r.set(str(mobile), code)
                r.expire(str(mobile), 60 * 5)  # 设置验证码5分钟过期
            else:
                re_dict["msg"] = re_json["msg"]  # 返回错误代码给re_dict

        else:
            for key, value in send_sms_form.errors.items():
                re_dict[key] = value[0]
        return JsonResponse(re_dict)  # 返回JsonResponse给Ajax
Example #2
0
 def post(self, request):
     send_sms_form = DynamicLoginForm(request.POST)
     res_dict = {}
     if send_sms_form.is_valid():
         print('验证成功')
         mobile = send_sms_form.cleaned_data.get('mobile')
         # 随机生成数字验证码
         code = random_str.generate_random(4, 0)
         response = send_message_code(yp_apikey, code, mobile)
         if response.get('code') == 0:
             res_dict['status'] = 'success'
             r = redis.Redis(host='localhost',
                             port=6379,
                             db=0,
                             charset='utf8',
                             decode_responses=True)
             r.set(str(mobile), code)
             # 设置验证码5分钟过期
             r.expire(str(mobile), 60 * 5)
         else:
             res_dict['msg'] = response.get('msg')
     else:
         print('验证失败')
         for key, value in send_sms_form.errors.items():
             res_dict[key] = value[0]
     return JsonResponse(res_dict)
Example #3
0
    def post(self, request, *args, **kwargs):
        login_form = DynamicLoginPostForm(request.POST)
        dynamic_login = True
        banners = Banner.objects.all()[:3]
        if login_form.is_valid():
            # 没有注册账号依然可以登录
            mobile = login_form.cleaned_data['mobile']
            # code = login_form.cleaned_data['code']

            existed_users = UserProfile.objects.filter(mobile=mobile)
            if existed_users:
                user = existed_users[0]
            else:
                # 创建一个用户
                user = UserProfile(username=mobile)
                password = generate_random(10, 2)
                user.set_password(password)
                user.mobile = mobile
                user.save()
            login(request, user)

            next = request.GET.get("next", "")
            if next:
                return HttpResponseRedirect(next)
            return HttpResponseRedirect(reverse("index"))
        else:
            d_form = DynamicLoginForm()
            return render(request, 'login.html', {"login_form": login_form,
                                                  "d_form": d_form,
                                                  "dynamic_login": dynamic_login,
                                                  "banners":banners})
Example #4
0
    def post(self, request, *args, **kwargs):
        login_form = DynamicLoginPostForm(request.POST)
        dynamic_login = True
        if login_form.is_valid():
            # 没有注册帐号依然可以登录
            mobile = login_form.cleaned_data['mobile']
            # code=login_form.cleaned_data['code']
            existed_users = UserProfile.objects.filter(mobile=mobile)
            if existed_users:
                user = existed_users[0]

            else:
                #         新建一个用户
                user = UserProfile(username=mobile)
                password = generate_random(10, 2)
                user.set_password(password)
                user.mobile = mobile
                user.save()
            login(request, user)
            return HttpResponseRedirect(reverse('index'))

        else:
            d_form = DynamicLoginForm()
            return render(
                request, 'login.html', {
                    'login_form': login_form,
                    'd_form': d_form,
                    'dynamic_login': dynamic_login
                })
Example #5
0
    def post(self, request, *args, **kwargs):
        login_form = DynamicLoginPostForm(request.POST)
        dynamic_login = True
        if login_form.is_valid():
            #没有注册账号依然可以登陆
            mobile = login_form.cleaned_data["mobile"]
            # code = login_form.cleaned_data["code"]

            existed_users = UserProfile.objects.filter(mobile=mobile)
            if existed_users:
                user = existed_users[0]
            else:
                #新建用户
                user = UserProfile(username=mobile)
                password = generate_random(10, 2)
                user.set_password(password)
                user.mobile = mobile
                user.save()
            login(request, user)
            return HttpResponseRedirect(reverse("index"))
        else:
            d_form = DynamicLoginForm()
            return render(
                request, "login.html", {
                    "login_form": login_form,
                    "d_form": d_form,
                    "dynamic_login": dynamic_login
                })
Example #6
0
 def post(self, request, *args, **kwargs):
     # 验证用户输入是否正确
     login_form = DynamicLoginPostForm(request.POST)
     dynamic_login = True
     banners = Banner.objects.all()[:3]
     if login_form.is_valid():
         mobile = login_form.cleaned_data["mobile"]
         # 查询用户是否存在
         existed_users = UserProfile.objects.filter(mobile=mobile)
         if existed_users:
             # 存在——获取用户信息进行登录
             user = existed_users[0]
         else:
             # 用户不存在,进行注册用户
             user = UserProfile(username=mobile)
             # 随机生成密码
             password = generate_random(10, 2)
             # 将随机密码进行加密
             user.set_password(password)
             user.mobile = mobile
             user.save()
         # 进行登录并跳转至首页
         login(request, user)
         return HttpResponseRedirect(reverse("index"))
     else:
         d_form = DynamicLoginForm
         return render(request, "login.html",
                       {"login_form": login_form, 'd_form': d_form, "dynamic_login": dynamic_login,
                        "banners": banners})
Example #7
0
 def post(self, request, *args, **kwargs):
     login_form = DynamicLoginPostForm(request.POST)
     dynamic_login = True
     banners = Banner.objects.all()[:3]
     if login_form.is_valid():#账号符合表单结构(forms中进行验证码匹配)
         #没有注册账号依然可以登录
         email = login_form.cleaned_data["email"]
         existed_users = UserProfile.objects.filter(email=email)#寻找数据库中该邮箱用户
         if existed_users:#如果账号存在
             user = existed_users[0]
         else:
             #新建一个用户
             user = UserProfile(username=email)
             password = generate_random(10, 2)
             user.set_password(password)
             user.email = email
             user.save()
         login(request, user)#登陆
         next = request.GET.get("next", "")
         if next:
             return HttpResponseRedirect(next)
         return HttpResponseRedirect(reverse("index"))
     else:
         d_form = DynamicLoginForm()
         return render(request, "login.html", {"login_form": login_form,
                                               "d_form": d_form,
                                               "banners":banners,
                                               "dynamic_login":dynamic_login})
Example #8
0
 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)
Example #9
0
 def post(self, request, *args, **kwargs):
     login_form = DynamicLoginPostForm(request.POST)
     dynamic_login = True
     banners = Banner.objects.all()[:3]
     if login_form.is_valid():
         mobile = login_form.cleaned_data['mobile']
         existed_users = UserProfile.objects.filter(mobile=mobile)
         if existed_users:
             user = existed_users[0]
         else:
             user = UserProfile(username=mobile)
             password = generate_random(10, 2)
             user.set_password(password)
             user.mobile = mobile
             user.save()
         login(request, user)
         next = request.GET.get('next', '')
         if next:
             return HttpResponseRedirect(next)
         return HttpResponseRedirect(reverse('index'))
     else:
         d_form = DynamicLoginForm()
         return render(
             request, 'login.html', {
                 'login_form': login_form,
                 'd_form': d_form,
                 'dynamic_login': dynamic_login,
                 'banners': banners
             })
Example #10
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)
Example #11
0
    def post(self,request,*args,**kwargs):
        dynamic_login=True
        banners = Banner.objects.all()[:3]
        #验证手机号及手机验证码
        login_form=DynamicLoginPostForm(request.POST)
        if login_form.is_valid():
            #没有注册仍然可以使用
            mobile=login_form.cleaned_data['mobile']
            code=login_form.changed_data['code']

            existed_user=UserProfile.objects.filter(mobile=mobile)
            if existed_user:
                user=existed_user[0]
            else:
                #新建用户
                user=UserProfile(username=mobile)
                password = generate_random(10, 2)
                user.set_password(password)
                user.mobile=mobile
                user.save()
            login(request, user)
            next = request.GET.get("next", '')
            if next:
                return HttpResponseRedirect(next)
            return HttpResponseRedirect(reverse('index'))
        else:
            # 验证码错误
            d_form=DynamicLoginForm()
            context = {'login_form': login_form,'dynamic_login':dynamic_login,'d_form':d_form,
            'banners':banners}
            return render(request, 'login.html', context=context)
Example #12
0
    def post(self, request, *args, **kwargs):
        login_form = DynamicLoginPostForm(request.POST)
        dynamic_login = True
        if login_form.is_valid():
            #没有注册账号依然可以登陆
            mobile = login_form.cleaned_data["mobile"]
            code = login_form.cleaned_data["code"]

            existed_users = UserProfile.objects.filter(mobile=mobile)
            if existed_users:
                user = existed_users[0]
            else:
                #新建一个用户
                user = UserProfile(username=mobile)
                password = generate_random((10, 2))    #生成用户首次登陆的随机密码
                user.set_password(password)    #生成该密码的秘文
                user.mobile = mobile
                user.save()
            login(request, user)    #使该用户登陆
            next = request.GET.get("next", "")
            if next:
                return HttpResponseRedirect(next)
            return HttpResponseRedirect(reverse("index"))    #跳转到首页

        else:
            d_form = DynamicLoginForm()
            return render(request, "login.html", {"login_form": login_form,
                                                  "d_form": DynamicLoginForm,
                                                  "dynamic_login": dynamic_login})    #传递到html文件中
Example #13
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)
Example #14
0
 def post(self, request, *args, **kwargs):
     dynamic_login = True  # 用于标识是否为动态登陆
     login_form = DynamicLoginPostForm(request.POST)
     if login_form.is_valid():
         # 没有账号依然可以登录
         mobile = login_form.cleaned_data["mobile"]
         # 获取code进行redis认证,判断验证码是否一致.采用利用form进行验证redis,使得代码分离性更好-> form.py
         # 验证用户是否存在
         existed_users = UserProfile.objects.filter(mobile=mobile)
         if existed_users:
             user = existed_users[0]
             login(request, user)
         else:
             # 新建一个用户
             user = UserProfile(username=mobile)
             password = generate_random(12)  # 生成密码
             user.set_password(password)
             user.mobile = mobile
             user.save()
         login(request, user)
         next = request.GET.get("next")
         if next:
             return redirect(next, request)  # 需要通过reverse跳转到index
         return redirect(reverse('index'), request)
     else:
         # 为了使得验证码得以显示,所以需要获取有验证码的form传递进来,验证码的form在普通的验证码字段
         d_form = DynamicLoginForm()
         return render(
             request, "login.html", {
                 "login_form": login_form,
                 "dynamic_login": dynamic_login,
                 "d_form": d_form,
             })
Example #15
0
    def post(self, request):
        d_captcha_form = DynamicLoginForm()
        dynamic_active = False
        dynamic_login_form = DynamicLoginPostForm(request.POST)
        if dynamic_login_form.is_valid():
            mobile = dynamic_login_form.cleaned_data.get('mobile')
            existed_users = UserProfile.objects.filter(mobile=mobile)
            if existed_users:
                user = existed_users[0]
            else:
                #新建一个用户
                user = UserProfile(username=mobile)
                password = generate_random(10, 2)
                user.set_password(password)  #set_password函数给指定的参数加密
                user.mobile = mobile
                user.save()

            login(request, user)
            return redirect(reverse('front:index'))
        else:
            dynamic_active = True
            # print(dynamic_login_form.errors.get_json_data())
            # print(dynamic_login_form.errors)
            content = {
                'dynamic_login_form': dynamic_login_form,
                'dynamic_active': dynamic_active,
                'd_captcha_form': d_captcha_form,
                'dynamic_login_form_errors': dynamic_login_form.errors
            }
            return render(request, 'login.html', context=content)
Example #16
0
    def post(self, request, *args, **kwargs):
        login_form = DynamicLoginPostForm(request.POST)

        #设置一个变量、登录报错以后、让页面还停留在动态短信登陆页面
        dynamic_login = True

        #如果短信验证码、验证成功
        if login_form.is_valid():
            # 没有账号可以登录  思路:先判断用户是否存在、如果存在 ...如果不存在先注册、给随机密码在登录、看以后代码
            # 2、提取手机号
            mobile = login_form.cleaned_data['mobile']

            #提取手机号
            existed_users = UserProfile.objects.filter(mobile=mobile)
            #如果手机号存在(用户存在)
            if existed_users:
                #把手机号给 login记录一下
                user = existed_users[0]

            #如果手机号不存在 (用户不保存在)
            else:
                #添加用户
                user = UserProfile(username=mobile)
                #添加用户名字
                user.password = user

                #添加随机密码
                # 3、生成随机数验证码、不怕爬虫去伪造
                password = generate_random(10, 2)
                user.set_password(password)
                #保存新用户的手机号
                user.mobile = mobile
                #保存密码
                user.save()
            #保存用户的信息
            login(request, user)

            #获取next
            next = request.GET.get('next', "")
            if next:
                # 直接跳转到http://127.0.0.1:8001/course/1/lesson/  这个页面
                return HttpResponseRedirect(next)

            # 跳转到主页
            return HttpResponseRedirect(reverse("index"))

        else:
            #传递这个图片验证码的、表单是因为:如果短信验证码登录报错、重新实例化 验证码对象、传递到前端登陆页面、就不用刷新登陆页面
            d_form = DynamicLoginForm()

            #如果短信验证码验证失败、会接受DynamicLoginPostForm 类的验证错误
            return render(
                request, "login.html", {
                    "login_form": login_form,
                    "dynamic_login": dynamic_login,
                    'd_form': d_form
                })
Example #17
0
 def post(self, request, *args, **kwargs):
     send_sms_form = DynamicLoginForm(request.POST)
     re_dict = dict()
     if send_sms_form.is_valid():
         mobile = send_sms_form.cleaned_data['mobile']
         # 随机生成数字验证码
         code = generate_random(4, 0)
         re_json = send_single_sms(code, mobile)
         if re_json['code'] == 0:
             re_dict['status'] = 'success'
             r_obj = redis_obj()
             r_obj.setex(str(mobile), 60 * 5, code)
         else:
             re_dict['msg'] = re_json['msg']
     else:
         for key, error in send_sms_form.errors.items():
             re_dict[key] = error[0]
     return JsonResponse(re_dict)
Example #18
0
    def post(self, request, *args, **kwargs):
        send_sms_form = DynamicLoginForm(request.POST)#遵循从froms表中的DynamicLoginForm返回数据的格式
        re_dict = {}
        if send_sms_form.is_valid():
            email = send_sms_form.cleaned_data["email"]
            #随机生成数字验证码
            code = generate_random(6, 0)#6位数字
            re_json = send_register_email(code,email=email,send_type='forget')#发送邮件
            if re_json:#发送成功时
                re_dict["status"] = "success" #设置status状态,便于js处理控件样式变化
                r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, charset="utf8", decode_responses=True)#连接redis(需要终端开启redis)
                r.set(str(email), code)#redis中建立键值对,储存邮箱验证码信息
                r.expire(str(email), 60*30) #设置验证码30分钟过期
            else:
                re_dict["msg"] = re_json #发送失败则返回错误信息
        else:
            for key, value in send_sms_form.errors.items():
                re_dict[key] = value[0]

        return JsonResponse(re_dict)#返回json至js处理
Example #19
0
 def post(self, request, *args, **kwargs):
     dynamic_login = True
     login_form = DynamicLoginPostForm(request.POST)
     # 校验手机号码(下面),和手机验证码(内嵌在DynamicLoginPostForm里面了)
     banners = Banner.objects.all()[:3]
     if login_form.is_valid():
         # 去数据库查是否存在该用户
         mobile = login_form.cleaned_data['mobile']
         existed_user = UserProfile.objects.filter(mobile=mobile)
         # 如果用户存在,则直接登录
         if existed_user:
             user = existed_user[0]
         # 如果用户不存在,则新建一个用户
         else:
             # 默认用户名=手机号
             user = UserProfile(username=mobile)
             # 使用明文密码不安全,所以先生存随机密码,再用AbstractUser自带的set_password来进行hash加密存储,防止被破解
             password = generate_random(10, 2)
             user.set_password(password)
             # 别忘记存手机号
             user.mobile = mobile
             # 最后对新建的对象进行保存,否则不会存进数据库
             user.save()
         # 登录后,跳转首页
         login(request, user)
         next = request.GET.get('next', '')
         if next:
             return HttpResponseRedirect(next)
         return HttpResponseRedirect(reverse('index'))
     # 手机号码或手机验证码,验证失败就跳回登录页面
     # 需求,显示错误信息
     else:
         # 生成d_form对象是为了当验证失败返回登录页面的时候,能够带上captcha字段
         d_form = DynamicLoginForm()
         return render(
             request, 'login.html', {
                 'login_form': login_form,
                 'dynamic_login': dynamic_login,
                 'd_form': d_form,
                 "banners": banners,
             })
Example #20
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)
Example #21
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)
Example #22
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})
Example #23
0
 def post(self, request):
     dynamic_login_flag = True
     login_form = DynamicLoginPostForm(request.POST)
     if login_form.is_valid():
         mobile = login_form.cleaned_data.get('mobile')
         existed_users = UserProfile.objects.filter(mobile=mobile)
         if existed_users:
             user = existed_users[0]
         else:
             # 未查到注册信息
             user = UserProfile(username=mobile)
             user.set_password(random_str.generate_random(10, 2))
             user.mobile = mobile
             user.save()
         login(request, user)
         return HttpResponseRedirect(reverse('index'))
     else:
         d_form = DynamicLoginForm()
         return render(
             request, 'login.html', {
                 'login_form': login_form,
                 'dynamic_login_flag': dynamic_login_flag,
                 'd_form': d_form
             })
Example #24
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_sms_single(mobile, TENCENT_Template_ID, [code, 5])
         # 如果手机验证码发送成功
         if re_json['result'] == 0:
             re_dict["status"] = "success"
             r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, charset="utf8", decode_responses=True)
             r.set(str(mobile), code)
             # 设置验证码五分钟过去
             r.expire(str(mobile), 60 * 5)
         else:
             re_dict["msg"] = re_json["errmsg"]
     else:
         for key, value in send_sms_form.errors.items():
             re_dict[key] = value[0]
     return JsonResponse(re_dict)
Example #25
0
    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)
Example #26
0
import requests
import json
from apps.utils.random_str import generate_random


def send_single_sms(apikey, code, mobile):
    # 发送单条短信
    url = "https://sms.yunpian.com/v2/sms/single_send.json"
    text = "【范向辉】您的验证码是{}。如非本人操作,请忽略本短信".format(code)

    res = requests.post(url, data={
        "apikey": apikey,
        "mobile": mobile,
        "text": text
    })
    res_json = json.loads(res.text)
    return res_json


if __name__ == "__main__":
    res = send_single_sms("6df689094eeec75e8e39452d37ec3622",
                          generate_random(6, 1),          "18438006462")
    import json
    res_json = json.loads(res.text)
    code = res_json["code"]
    msg = res_json["msg"]
    if code == 0:
        print("发送成功")
    else:
        print("发送失败: {}".format(msg))