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

32 篇文章 8 订阅
本文介绍了使用Django实现邮箱验证码的过程,包括生成随机字符串、构造激活URL、存入缓存、创建激活页面、发送邮件及验证接口的详细步骤。
摘要由CSDN通过智能技术生成

邮箱验证码的生成

思路

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值