Django学习笔记(十七):邮箱验证码生成和校验激活

邮箱验证码的生成

思路

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:post/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>

猜你喜欢

转载自blog.csdn.net/xiaohuoche175/article/details/81303168
今日推荐