评判一下注册的步骤
注册模块
1. 用户在前端输入手机号 点击获取验证码
2. 后端获取到手机号并发送验证码
3. 用户接受到验证码, 输入并登录或注册
4. 后端完成登录或注册操作, 授权用户登录系统
https://blog.csdn.net/qq_22034353/article/details/90640981
P22
1. 下载 wheezy.captcha的第三方开发包
书写视图函数
根据第三方包类下面生成的实例,直接拿来用 (可以看到上面类的initlization方法 return 返回三个参数, 也就是我们实例返回的三个参数 name, text, image_data
from . import auth
from app.utils.captch.captcha import captcha
# GET 127.0.0.1/api/v1.0/image_codes/<image_code_id>
@auth.route(\'/image_codes/<image_code_id>\')
def get_image_code(image_code_id):
"""
获取图片验证码
: params iamge_code_id: 图片验证码编号
:return: 验证码图片
"""
# 接受参数
# 检验参数
# 业务逻辑处理
# 生成图片验证码
# 名字, 真实文本, 图片数据
name, text, image_data = captcha.generate_captcha()
# 将验证码真实值与编号保存到redis, 并设置有效期
# 1. redis 有哪些数据类型?
# "key": xxx
#2. 可以存一条记录吗? 把所有验证码都放入key= "image_codes" 中, 以列表的形式吗? 为什么不行?
#3. 那我们以什么形式存储?
# 4. 哈希类型怎么存取的?
# 返回图片
# 返回值
pass
# 生成6位随机数 而不是生成0-6位随机数
>>> \'%06d\' % random.randint(0, 999999)
\'692782\'
# 判断图片验证码是否过期
获取短信验证码的接口
@auth.route("/sms_codes/<re(r\'1[34578]\d{9}\'):mobile>")
def get_sms_code(mobile):
"""获取短信验证码"""
# 1.获取参数
# 2. 校验参数
# 3. 业务逻辑处理
# 从redis中取出真实的图片验证码
# 判断图片验证码是否过期
# 与用户填写的值对比
# 判断手机号存在不,
try:
user = User.query.filter_by(mobile=mobile).first()
except Exception as e:
current_user.logger.error(e)
else:
if user is not None:
return jsonify("手机号已存在")
# 不存在则生成短信验证码
sms_code = "%06d" % random.randint(0, 999999)
# 保存真实的短信验证码
try:
# 返回值
5.如何生成0-6位随机数?使用什么模块? 如何生成6位随机数?
答案:
-
字符串 列表, 哈希 set
-
可以, 不以列表的形式, 因为我们要存入验证码和其对应的id,两者之间有关系, 而列表只能存放字符串,没有对应关系 例: [ {}]
-
image_codes: {"编号1":"真实文本", "":""}
-
与python对象的字典类型类似{\'hash\': \'value\'}形式???? (还没学习redis, 有待确定)
-
使用random模块的randint方法
# 0- 6位随机数 >>>random.randint(0, 999999) # 6位随机数 >>>%06d % random.randint(0, 999999)