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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
浅析Python3爬虫登录模拟
Feb 07 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
简单了解python反射机制的一些知识
Jul 13 Python
python正则表达式匹配IP代码实例
Dec 28 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
如何在python中判断变量的类型
Jul 29 Python
pandas中对文本类型数据的处理小结
Nov 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 登录记住密码实现思路
2013/05/07 PHP
PHP正则验证Email的方法
2015/06/15 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
javascript中对对层的控制
2006/12/29 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
python爬虫的工作原理
2017/03/05 Python
详谈python read readline readlines的区别
2017/09/22 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python把1变成01的步骤总结
2019/02/27 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
教师评优的个人自我评价分享
2013/09/19 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
金榜题名主持词
2015/07/02 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
MySQL限制查询和数据排序介绍
2022/03/25 MySQL