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): 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)
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)
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
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): 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): 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)
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})
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 })
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 })
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 })
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})
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})
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文件中
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 })
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})
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)
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 })
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, })
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 })
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, })
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})
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 })
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 })
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)
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, })
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, })
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 })
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 })
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处理