示例#1
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)
示例#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)
示例#3
0
    def post(self, request, *args, **kwargs):
        send_sms_form = DynamicLoginForm(request.POST)
        re_dict = {}
        if send_sms_form.is_valid():
            mobile = "+1" + send_sms_form.cleaned_data["mobile"]
            code = generate_random(4, 0)
            re_json = send_single_sms(twilio_account_id,
                                      twilo_auth_token,
                                      from_twilio_mobile,
                                      code,
                                      to_mobile=mobile)
            if re_json:
                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), 60 * 30)  # 30 mins expired
            else:
                re_dict["msg"] = "error"
        else:
            for key, value in send_sms_form.errors.items():
                re_dict[key] = value[0]

        return JsonResponse(re_dict)
示例#4
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
示例#5
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)
示例#6
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)
示例#7
0
    def post(self, request, *args, **kwargs):
        response_dict = {}
        send_sms_from = DynamicLoginForm(request.POST)
        if send_sms_from.is_valid():
            mobile = send_sms_from.cleaned_data['mobile']

            code = {'code': f'{generate_random(4, 0)}'}
            response_json = send_sms_ali(mobile, aliyunsms_accesskeyid,
                                         aliyunsms_accesskeysecret,
                                         aliyunsms_signature,
                                         aliyunsms_template_id, code)
            if response_json['Code'] == 'OK':
                response_dict['status'] = 'success'
                db = redis.Redis(host=REDIS_HOST,
                                 port=REDIS_PORT,
                                 db=0,
                                 charset='utf8',
                                 decode_responses=True)
                db.set(str(mobile), code['code'])
                db.expire(str(mobile), 60 * 5)  #设置验证码5分钟过期
            else:
                response_dict['message'] = response_json['Message']
        else:
            for key, value in send_sms_from.errors.items():
                response_dict[key] = value[0]
        return JsonResponse(response_dict)
示例#8
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})
示例#9
0
 def post(self, request, *args, **kwargs):
     banner = Banner.objects.all()[:3]
     dynamic_login = True
     login_form = DynamicLoginPostForm(request.POST)
     if login_form.is_valid():
         # 没有注册帐号也能登录
         mobile = login_form.cleaned_data['mobile']
         exist_users = UserProfile.objects.filter(mobile_phone=mobile)
         if exist_users:
             user = exist_users[0]
             login(request, user)
         else:
             # 新建一个用户
             user = UserProfile(username=mobile)
             password = str(random.randint(100000, 999999))
             user.set_password(password)
             user.mobile_phone = mobile
             user.save()
             login(request, user)
         next = request.GET.get('next', '')
         if next:
             return HttpResponseRedirect(next)
         return HttpResponseRedirect(reverse('index'))
     else:
         captcha_form = DynamicLoginForm()
         return render(
             request, 'login.html', {
                 'login_form': login_form,
                 'captcha_form': captcha_form,
                 'dynamic_login': dynamic_login,
                 "banners": banner
             })
示例#10
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']
            existed_user = UserProfile.objects.filter(mobile=mobile)
            if existed_user:
                user = existed_user[0]

            else:
                # 创建一个用户
                user = UserProfile(username=mobile)
                password = gencrate_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
                })
示例#11
0
 def post(self, request, *args, **kwarg):
     login_form = DynamicLoginPostForm(request.POST)
     dynamic_login = True
     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)
             user.set_password("1234")
             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,
                 "dynamic_login": dynamic_login,
                 "d_form": d_form
             })
示例#12
0
文件: views.py 项目: Guovin/FreeStudy
 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})
示例#13
0
 def get(self, request, *args, **kwargs):
     # 判断用户是否登录
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse('index'))  # 跳转url地址
     # 返回图片验证码
     login_form = DynamicLoginForm()
     return render(request, 'login.html', {"login_form": login_form})
示例#14
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文件中
示例#15
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
                })
示例#16
0
    def get(self, request):
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('index'))

        dynamic_login_form = DynamicLoginForm()
        return render(request, 'login.html',
                      {'dynamic_login_form': dynamic_login_form})
示例#17
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)
示例#18
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
             })
示例#19
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,
             })
示例#20
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"]
         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 HttpResponseRedirect(reverse('login'))
     else:
         d_form = DynamicLoginForm()
         return render(
             request, 'login.html', {
                 'login_form': login_form,
                 'dynamic_login': dynamic_login,
                 'd_form': d_form
             })
示例#21
0
文件: views.py 项目: skysunlei/Online
    def get(self, request, *args, **kwargs):
        login_form = DynamicLoginForm()
        all_courses = Course.objects.order_by("-add_time")[:3]
        return render(request, "register.html", {
            "all_courses": all_courses,
            "login_form": login_form,

        })
示例#22
0
文件: views.py 项目: XrazYang/emooc
 def get(self, request):
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse('index'))
     next = request.GET.get('next', "")
     dynamic_login_form = DynamicLoginForm()
     hot_courses = Course.objects.order_by("-click_nums")[:3]
     return render(request, self.html_path,
                   {'dynamic_login_form': dynamic_login_form, 'next': next, 'hot_courses': hot_courses})
示例#23
0
 def get(self, request, *args, **kwargs):
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse('index'))
     next = request.GET.get("next", "")
     login_form = DynamicLoginForm()
     return render(request, 'login.html', {
         'login_form': login_form,
         'next': next
     })
示例#24
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
                })
示例#25
0
文件: views.py 项目: nhb-git/mxOnline
 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)
示例#26
0
 def get(self, request, *args, **kwargs):
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse("index"))
     next = request.GET.get("next", "")
     login_form = DynamicLoginForm()
     return render(request, "login.html", {
         "login_form": login_form,
         "next": next,
     })
示例#27
0
    def get(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            return redirect(reverse('index'))  # 重定向到index页面,使用reverse函数反向解析url

        next = request.GET.get("next", "")
        login_form = DynamicLoginForm()

        return render(request, "login.html", {
            "login_form": login_form,
            "next": next,
        })
示例#28
0
 def get(self, request, *args, **kwargs):
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse('index'))
     banners = Banner.objects.all()[:3]
     next = request.GET.get('next', '')
     login_form = DynamicLoginForm()
     return render(request, 'login.html', {
         'login_form': login_form,
         'next': next,
         'banners': banners
     })
示例#29
0
 def get(self, request, *args, **kwargs):
     banner = Banner.objects.all()[:3]
     if request.user.is_authenticated:
         return HttpResponseRedirect(reverse('index'))
     captcha_form = DynamicLoginForm()
     next = request.GET.get('next', '')
     return render(request, 'login.html', {
         'captcha_form': captcha_form,
         'next': next,
         "banners": banner
     })
示例#30
0
文件: views.py 项目: Guovin/FreeStudy
    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处理