Django实现发送邮件找回密码功能


Posted in Python onAugust 12, 2019

在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过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 = 'xxx@163.com' # 帐号
EMAIL_HOST_PASSWORD = 'xxx' # 密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

其中EMAIL_HOST根据邮箱进行设置,如果为QQ邮箱,即“smtp.qq.com”。

另外在邮箱中有两处配置:

1.开启POP3/SMTP服务(设置->POP3/SMTP/IMAP)

Django实现发送邮件找回密码功能

2.配置中的密码并不是邮箱的登录密码,填写的是授权码

Django实现发送邮件找回密码功能

发送邮件实现

在应用(user)下的views.py中,进行验证码的生成与发送邮件操作。这里关于基础项目搭建、路由配置不再进行赘述。

生成随机验证码方法:

#随机生成验证码
def random_str(randomlength=8):
 str = ''
 chars = 'abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
 length = len(chars) - 1
 random = Random()
 for i in range(randomlength):
  str += chars[random.randint(0, length)]
 return str

发送邮件方法:

#发送邮件找回密码 
def findpwdView(request):
 if request.method=="GET":
  email_title = "找回密码"
  code=random_str()#随机生成的验证码
  request.session["code"]=code #将验证码保存到session
  email_body = "验证码为:{0}".format(code)
  send_status = send_mail(email_title, email_body,"xxxx@163.com",["xxxx@qq.com",])
  msg="验证码已发送,请查收邮件"
 else:
  username=request.POST.get("username")
  password=request.POST.get("password")
  user=User.objects.get(username=username)
  code=request.POST.get("code") #获取传递过来的验证码
  if code==request.session["code"]:
   user.set_password(password)
   user.save()
   del request.session["code"] #删除session
   msg="密码已重置"
 return render(request,"findpwd.html",locals())

总结

以上所述是小编给大家介绍的Django实现发送邮件找回密码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python中的闭包总结
Sep 18 Python
python中while循环语句用法简单实例
May 07 Python
基于python爬虫数据处理(详解)
Jun 10 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
python3爬取数据至mysql的方法
Jun 26 Python
python对html过滤处理的方法
Oct 21 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python elasticsearch环境搭建详解
Sep 02 Python
python实现大学人员管理系统
Oct 25 Python
python获取栅格点和面值的实现
Mar 10 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
使用pyecharts生成Echarts网页的实例
Aug 12 #Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 #Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 #Python
Python实现网页截图(PyQT5)过程解析
Aug 12 #Python
python实现知乎高颜值图片爬取
Aug 12 #Python
python3 enum模块的应用实例详解
Aug 12 #Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 #Python
You might like
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php 异常处理实现代码
2009/03/10 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
Python验证码识别处理实例
2015/12/28 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
什么是网络协议
2016/04/07 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
生活小常识广播稿
2014/09/16 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
身份证丢失证明
2015/06/19 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python