一、先创建一个数据库表,用户存储用户的邮箱和验证码
#此文件中创建一个数据库表,用户存储用户的邮箱、验证
class EmailCaptchaModel(db.Model):
__tablename__ = "email_captcha"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
email = db.Column(db.String(100), nullable=False)
captcha = db.Column(db.String(100), nullable=False)
将models.py编写好的数据库表映射到数据库中,执行如下操作(三部曲),看如下链接 juejin.cn/post/732791… 表email_captcha会在数据库中创建成功
二、在auth.py文件中编写代码
from flask import request
from exts import db
import string
import random
from flask import jsonify
from models import EmailCaptchaModel
# bp.route:如果没有指定methods参数,默认就是GET请求
@bp.route("/captcha/email")
def get_email_captcha():
# /captcha/email/<email>
# /captcha/email?email=xxx@qq.com
email = request.args.get("email") #得到目标邮箱地址
# 4/6:随机数组、字母、数组和字母的组合
source = string.digits*4
captcha = random.sample(source, 4)
captcha = "".join(captcha)
# I/O:Input/Output
message = Message(subject="知了传课注册验证码", recipients=[email], body=f"您的验证码是:{captcha}")
mail.send(message)
# memcached/redis
# 用数据库表的方式存储
email_captcha = EmailCaptchaModel(email=email,captcha=captcha)
db.session.add(email_captcha)
db.session.commit()
# RESTful API
# {code: 200/400/500, message: "", data: {}}
return jsonify({"code": 200, "message": "", "data": None})
代码编写完成, 地址栏输入:http://xxx/auth/captcha/email?email=xbb@163.com , 执行完成页面输出内容,邮箱可收到验证码,数据库已存储邮箱和验证码
三、前端的实现 需要使用js和html相关知识,将前后端相结合,最终在注册页面输入邮箱获取验证码即可