在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能。
<强> 强>
<强>功能流程:强>
1。首先在用户登录界面,添加“忘记密码”链接
2。生成随机验证码,发送邮件到用户信息中填写邮箱
3。在重置密码页面,验证填写验证码是否需匹配
4。重置密码成功,重新进入到登录页面
<>强技术点:强>
1。发送邮件使用Django内置的<代码> django.core.mail 代码>实现
2。重置密码页面验证验证码填写是否匹配,提前将发送的验证码进行缓存,再进行匹配
在setting.py中,添加邮箱配置:
EMAIL_USE_SSL=True EMAIL_HOST=' smtp.163.com ' EMAIL_PORT=465 EMAIL_HOST_USER=皒xx@163.com”#帐号 EMAIL_HOST_PASSWORD=皒xx”#密码 DEFAULT_FROM_EMAIL=EMAIL_HOST_USER
其中EMAIL_HOST根据邮箱进行设置,如果为QQ邮箱,即“smtp.qq.com”。
另外在邮箱中有两处配置:
1。开启POP3/SMTP服务(设置→POP3/SMTP/IMAP)
2。配置中的密码并不是邮箱的登录密码,填写的是授权码
在应用(用户)下的views.py中,进行验证码的生成与发送邮件操作。这里关于基础项目搭建,路由配置不再进行赘述。
生成随机验证码方法:
#随机生成验证码 def random_str (randomlength=8): str=" 识字课=' abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ' 长度=len(字符)- 1 随机=随机() 因为我在范围(randomlength): str +=字符[随机的。randint(0,长度) 返回str
发送邮件方法:
#发送邮件找回密码 def findpwdView(请求): 如果request.method==暗玫健? email_title="找回密码” 代码=random_str() #随机生成的验证码 请求。会话(“代码”)=代码#将验证码保存到会话 email_body="验证码为:{0}“.format(代码) send_status=send_mail (email_title email_body,“xxxx@163.com”(“xxxx@qq.com”)) 味精="验证码已发送,请查收邮件” 其他: 用户名=request.POST.get(“用户”) 密码=request.POST.get(“密码”) 用户=User.objects.get(用户名=用户名) 代码=request.POST.get(“代码”)#获取传递过来的验证码 如果代码==request.session(“代码”): user.set_password(密码) user.save () 德尔请求。会话(“代码”)#删除会话 味精="密码已重置” 返回渲染(请求,“findpwd.html”,当地人())
以上所述是小编给大家介绍的Django实现发送邮件找回密码功能,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!