Flask项目注册功能

代码逻辑:

1.接收参数(手机号,图片验证码,密码)(mobile,smscode,password)
2.校验参数
2.1校验参数是否齐全
2.2校验手机号是否合法,用正则
2.3校验密码长度是否符合条件(长度>6位)
2.4从redis中获取短信验证码, 判空处理
2.5进行短信验证码校验
3.实例化用户对象,并把数据保存, 注意:密码要加密
4.实现状态保持
5.返回结果

1.接收参数(手机号,图片验证码,密码)(mobile,smscode,password)

  mobile = request.json.get("mobile")
    smscode = request.json.get("smscode")
    password = request.json.get("password")

2.校验参数

  2.1校验参数是否齐全

 if not all([mobile,smscode,password]):
        return jsonify(errno=RET.PARAMERR,errmsg="缺失参数")

  2.2校验手机号是否合法,用正则校验

  mobile = mobile.strip()
    if not re.findall('^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$',mobile):
        return jsonify(errno=RET.PARAMERR,errmsg="手机号格式错误")

  2.3校验密码长度是否符合条件(长度>6)

     拿到一个容器型函数长度要用len函数用.是拿不到的

 

  if not len(password)<6:
        return jsonify(errno=RET.PARAMERR, errmsg="密码长度不规范")

 

  2.4从redis中获取短信验证码, 判空处理   进行判空是针对找不到的数据  用原因是手机号错误或者是验证码过期 

  try:
        sms_code_server = sr.get("SMS:" + mobile)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR,errmsg="数据库查询失败")
    if not sms_code_server:
        return jsonify(errno=RET.PARAMERR, errmsg="短信验证码错误")

  

  2.5进行短信验证码校验

 

     判断验证码是否一致

    if sms_code != sms_code_server:
        return jsonify(errno=RET.PARAMERR, errmsg="短信验证码错误")

3.实例化用户对象,并把数据保存, 注意:密码要加密

首先要分析用户模型类当中要用到的数据  用户编号不用写  首先用户昵称要设置,这里用它注册的手机号作为昵称    密码存储的话只能存储加密好的密码  手机号要和昵称一样   

用户头像在前台设置所以不用写     获取登录时间DateTime要导入一个datetime模块     

 

# 先实例化User对象用一个变量保存
 user = User()
    # 用户昵称
    user.nick_name = mobile
    # 手机号
   user.mobile = mobile
# 获取最后一次登录时间 user.last_login = datetime.datetime.now()

密码加密用第三方包  常用的包有 md5  sha  sh   要把密码隐藏起来所以写到模型类里面  先在模型类里面写一个异常如果有人读直接抛出

模型类代码:

@property
    def password(self):
        raise AttributeError("you con't read!")

    @password.setter
    def password(self, value):
     self.password_hash = generate_password_hash(value)

 

 user.password = password

    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR,errmsg="用户保存失败")

4.返回状态保持

  session["user_id"] = user.id
    session["mobile"] = user.mobile
    session["nick_name"] = user.nick_name

5.返回结果

return jsonify(errno=RET.OK, errmsg="成功")

  

 

posted @ 2021-10-14 14:41  沐公子  阅读(116)  评论(0)    收藏  举报