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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python守护进程(daemon)代码实例
Mar 06 Python
python基于socket实现网络广播的方法
Apr 29 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
python中比较两个列表的实例方法
Jul 04 Python
Django stark组件使用及原理详解
Aug 22 Python
pytorch标签转onehot形式实例
Jan 02 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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生成随机数或者字符串的代码
2008/09/05 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
又一个图片自动缩小的JS代码
2007/03/10 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python函数不定长参数使用方法解析
2019/12/14 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
生日宴会主持词
2014/03/20 职场文书
网站客服岗位职责
2014/04/05 职场文书
目标管理责任书
2014/04/15 职场文书
协议书范本
2014/04/23 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
黄埔军校观后感
2015/06/10 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL