def mobile_verify(request): if request.method == "GET": mobile = request.GET.get("phone") if mobile: code = Sms_verify.tencent_send(mobile) if code: key = 'sms:%s' % mobile code_m = Utils.make_md5s(code) r.set(key, code_m) r.expire(key, contains.MOBILE_KEEP_TIME) print("本次验证码:", code) return JsonResponse({"code": 200, "msg": "发送成功!"}) return JsonResponse({"code": 10109, "msg": "发送失败!"}) elif request.method == "POST": phone = request.POST.get('phone') mobile_verify_code = request.POST.get('verifyCode') print(phone, mobile_verify_code) if mobile_verify_code and len(mobile_verify_code) == 6: key = 'sms:%s' % phone saved_code = r.get(key).decode() verify_code_m = Utils.make_md5s(mobile_verify_code) print("saved:", saved_code) print(verify_code_m) if not saved_code: return JsonResponse({"code": 10111, "msg": "验证码输入错误"}) elif saved_code != verify_code_m: return JsonResponse({"code": 10112, "msg": "验证码输入错误"}) return JsonResponse({"code": 200}) else: return JsonResponse({"code": 10110, "msg": "验证码输入错误!"})
def register(request): """ 注册功能 :param request: :return: """ if request.method == "GET": return render(request, "user/register.html") elif request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") pwd2 = request.POST.get("password") phone = request.POST.get("phone") email = request.POST.get("email") if password != pwd2: re_data = {"code": 10103, "msg": "两次密码输入不一致"} render(request, "user/register.html", locals()) if User_mapper.check_new(kind="username", value=username): re_data = {"code": 10104, "msg": "用户名已存在!"} render(request, "user/register.html", locals()) if User_mapper.check_new(kind="phone", value=phone): re_data = {"code": 10105, "msg": "手机号已存在!"} render(request, "user/register.html", locals()) if User_mapper.check_new(kind="username", value=username): re_data = {"code": 10106, "msg": "邮箱已存在!"} render(request, "user/register.html", locals()) password_m = Utils.make_md5s(password) try: user = User_profile_model.objects.create(username=username, password=password_m, phone=phone, email=email) except Exception as e: print("register exception:", e) re_data = {"code": 10107, "msg": "系统异常!"} render(request, "user/register.html", locals()) # TODO 发送激活邮件 send_email_verify(username, email) request.session["username"] = username request.session["uid"] = user.id # 重定向到首页(可到个人中心页面提示邮箱验证) return redirect("/index")
def login(request): """ 登陆功能 :param request: :return: """ if request.method == "GET": path_from = request.META.get('HTTP_REFERER', '/') ## 记录当前页url print(path_from) path_from = path_from if path_from != '/user/login' else '/index' # 判断是否记住了密码 if "username" in request.COOKIES and "uid" in request.COOKIES: try: user = User_profile_model.objects.get( username=request.COOKIES["username"]) except Exception: request.delete_cookie('username') result = {'code': 10201, 'error': '用户不存在 !!'} return HttpResponse(result['error']) request.session["username"] = request.COOKIES["username"] request.session["uid"] = request.COOKIES["uid"] request.session[ "nickname"] = user.nickname if user.nickname else user.username request.session["active"] = user.is_active return redirect(path_from) request.session["login_from"] = path_from return render(request, "user/login.html") elif request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") try: user = User_profile_model.objects.get(username=username) except Exception as e: re_data = {"code": 10108, "msg": "用户名或密码错误!"} return render(request, "user/login.html", re_data) password_m = Utils.make_md5s(password) if password_m != user.password: re_data = {"code": 10108, "msg": "用户名或密码错误!!"} return render(request, "user/login.html", re_data) request.session["uid"] = user.id request.session["username"] = username request.session["is_active"] = user.is_active nickname = user.nickname if nickname: request.session["nickname"] = nickname try: resp = HttpResponseRedirect(request.session['login_from']) del request.session['login_from'] except KeyError as e: resp = HttpResponseRedirect("/index") # 检查用户是否 勾选了 '记住用户名',如果勾选,还需要在Cookies中存储 uid&username 过期时间为7天 if 'isSave' in request.POST.keys(): resp.set_cookie("uid", user.id, contains.COOKIES_KEEP_TIME) resp.set_cookie("username", username, contains.COOKIES_KEEP_TIME) # resp.set_cookie("is_active", user.is_active, contants.COOKIES_KEEP_TIME) # resp.set_cookie("nickname",nickname,contants.COOKIES_KEEP_TIME) return resp