邮箱验证码的生成
思路
1,生成一个随机字符串
2,拼接用于激活的url连接
3,将随机字符串和发送的那个邮箱保存到缓存(需要添加缓存配置)
4,创建激活页面
5,将激活页面发送给对应的账号
6,写验证连接对应的API,在里面完成验证
新建my_util.py文件,写入随机生成字符串方法
my_util.py代码
import uuid
import hashlib
#生成随机字符串
def get_random_str():
uuid_val = uuid.uuid()
uuid_str = str(uuid_val).encode("utf-8")
md5 = hashib.md5()
md5.update(uuid_str)
return md5.hexdigest
views.py代码
def verify(req):
if req.method == "GET":
return render(req,'verify.html')
else:
param = req.POST
email = param.get("email")
#生成随机字符
random_str = get_random_str()
#拼接验证连接
url = "http://host:port/day08/active" + random_str
#加载激活模板
tmp = loader.get_template('active.html')
#渲染
html_str = tmp.render({'url':url})
#准备邮寄数据
title = "邮寄标题"
msg = ""
email_from = settings.DEFAULT_FROM_EMAIL
reciever = [
email,
]
send_mail(title,msg,email_from,reciever,html_message=html_str)
#记录token对应的邮箱是谁,有效时间(秒)
cache.set(random_str,email,120)
return HttpResponse("发送成功")
def active(req,random_str):
#拿参数对应缓存数据
res = cache.get(random_str)
if res:
#通过邮箱找到对应用户
#给用户的状态字段做更新,从未激活状态变成激活状态
return HttpResponse(res+"激活成功")
else:
return HttpResponse("验证连接无效")
邮箱验证发送页面verify.html代码,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/t8/verify" method="post" style="text-align: center">
<input type="text" placeholder="邮箱" name="email">
<br>
<input type="submit" value="发送">
</form>
</body>
</html>
邮箱接收文件active.html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
请点击 下面的连接进行激活
<p>
<a href="{{url}}">{{url}}</a>
</p>
</body>
</html>