1.3完成注册
在开始之前我们还是先来分析一下过程
1、接收参数(电话号码,图形验证,密码)
2、校验参数
1.1判断接收的三个参数是否为空
1.2校验手机号是否是合法的手机号(正则校验
1.3校验图形验证码
1.4校验手机短信验证码
从redis库中拿出来和用户输入的进行对比
3、实例化数据库类,将数据写入数据库
4、做到注册即登录
5、返回数据
以下是代码
1 def register(): 2 #接收参数(手机号,图形验证码,密码) 3 res_dict = request.json 4 mobile = res_dict.get('mobile') 5 smscode = res_dict.get('smscode') 6 password = res_dict.get('password') 7 #判断以上的三个参数是否为空 8 if not all([mobile,smscode,password]): 9 return jsonify(error=RET.PARAMERR,errmsg="缺失参数") 10 #检验手机号是否是正常的手机号(正则 11 if not re.match("^1[37895][0-9]{9}$",mobile): 12 return jsonify(error=RET.PARAMERR, errmsg="非法手机号") 13 try: 14 #从redis数据库中拿出手机验证码 15 sms_code_server = redis_store.get('sms_code:'+mobile) 16 except Exception as e: 17 #日志记录 18 current_app.logger.error(e) 19 return jsonify(error=RET.DBERR, errmsg="手机验证码读取失败") 20 #判断如果手机验证码为空时的情况 21 if not sms_code_server: 22 return jsonify(error=RET.NODATA, errmsg="未找到手机验证码") 23 #将数据库中拿到的和前台传来的进行对比 24 if smscode != sms_code_server: 25 return jsonify(error=RET.DATAERR,errmsg="验证码输入错误") 26 #实例化User模型类 27 user = User() 28 #将所有参数逻辑添加进入数据库 29 user.mobile = mobile 30 user.nick_name = mobile 31 user.password = password 32 user.last_login = datetime.datetime.now() 33 try: 34 #提交到数据库中去 35 db.session.add(user) 36 db.session.commit() 37 except Exception as e: 38 current_app.logger.error(e) 39 db.session.rollback() 40 return jsonify(error=RET.DATAERR,errmsg="数据库写入失败") 41 #修改session的值,做到注册即登录 42 session['id'] = user.id 43 sessions['nick_name'] = user.nick_name 44 sessions['mobile'] = user.mobile 45 #返回数据内容 46 return jsonify(error=RET.OK, errmsg="注册成功")
注意:其中39行里面的db.session.rollback()表示的是回滚的意思
意思就是如果在添加过程中有一步出错的话就结束掉整段程序的运行。
下面是js代码
1 $(".register_form_con").submit(function (e) { 2 // 阻止默认提交操作 3 e.preventDefault() 4 5 // 取到用户输入的内容 6 var mobile = $("#register_mobile").val() 7 var smscode = $("#smscode").val() 8 var password = $("#register_password").val() 9 10 if (!mobile) { 11 $("#register-mobile-err").show(); 12 return; 13 } 14 if (!smscode) { 15 $("#register-sms-code-err").show(); 16 return; 17 } 18 if (!password) { 19 $("#register-password-err").html("请填写密码!"); 20 $("#register-password-err").show(); 21 return; 22 } 23 24 if (password.length < 6) { 25 $("#register-password-err").html("密码长度不能少于6位"); 26 $("#register-password-err").show(); 27 return; 28 } 29 30 // 发起注册请求 31 var params = { 32 'mobile':mobile, 33 'smscode':smscode, 34 'password':password 35 }; 36 37 $.ajax({ 38 url:'/passport/register', // 请求地址 39 type:'post', // 请求方法 40 data:JSON.stringify(params), // 请求参数 41 contentType:'application/json', 42 headers:{'X-CSRFToken':getCookie('csrf_token')}, // 在请求头中带上csrf_token 43 success:function (response) { 44 if (response.errno == '0') { 45 // 注册成功 46 location.reload(); 47 } else { 48 alert(response.errmsg); 49 } 50 } 51 }); 52 53 }) 54 })