flask创建手机验证码发送逻辑

flask创建手机验证码发送逻辑

同样的,回顾django中使用手机验证码的逻辑,大致可以分为几步
1.获取用户手机号码
2.校验手机号码
3.生成验证码
4.将验证码添加手机号查询方式添加到redis中
5.添加redis中手机存在验证,为了不让用户重复发送验证码
6.发送手机验证码
根据上面的步骤,我就直接贴代码了

from cars.libs.yuntongxun.sms import CCP
导入手机验证码发送的第三方包
import re
import random
import logging
from . import api
from cars import redis_store
调用全局redis实例
from flask import request,jsonify
导入request包获取传入数据




@api.route('/send_msg',methods=['post'])
使用post方法来获取用户数据
def send_msg_code():
    # acquire parameter
    phone=request.form.get('phone')
    获得前端传回用户手机号码
    print(phone)
    # verify parameter is not empty
    if not all([phone]):
        return jsonify(message='phone can not be null')
	验证手机号码是否为空
    # verify parameter is legel
    if not re.match(r'1[3,4,5,7,8,9]\d{9}',phone):
        return jsonify(message='phone number is not avaliable')
	验证手机号码是否是合法的
    # generate msg_code
    msg = '%04d' % random.randint(0, 9999)
    生成手机验证码
    logging.debug(msg)
    # store msg in redis
    print(msg)
    try:
        if redis_store.get('flag_%s'%phone):
        如果该值存在,即为手机验证码还未过期重复发送
            return jsonify(message='do not send code in 5 minutes')
        else:
        如果不存在,即手机验证码并未发送,发送存储新的验证码到redis中,并添加手机查询标志
            redis_store.set('msg_%s' % phone, msg, 60 * 5)
            redis_store.set('flag_%s' % phone, 1, 60 * 5)
    如果保存不成功,抛出错误
    except Exception as e :
        logging.error(e)
        return jsonify(message='msg_code error')
	发送手机验证码,模板为1,内容为验证码和过期时间
    # send msg
    ccp=CCP()
    ret_data = ccp.send_template_sms(phone, [msg, '5'], 1)
    如果返回值为-1则手机验证码发送失败
   	if ret_data == -1:
        return jsonify(msg='msg_code send error')
    # return
    return ('okay')

这里手机验证码发送的包是我之前django使用的包
用postman模拟
如果觉得发送部分逻辑比较麻烦可以先注释掉
别忘记把CSRF保护部分代码注释掉
flask创建手机验证码发送逻辑_第1张图片
注意这里的发送路径拼接别忘了添加注册蓝图时添加的前缀路径
flask创建手机验证码发送逻辑_第2张图片
DEGUG中就是我们的验证码信息
flask创建手机验证码发送逻辑_第3张图片
redis中的信息

你可能感兴趣的:(flask项目学习)