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="成功")


浙公网安备 33010602011771号