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之玩转字符串(2)更新篇
Sep 28 Python
Python中的变量和作用域详解
Jul 13 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
Python中文编码知识点
Feb 18 Python
numpy.random模块用法总结
May 27 Python
python的pstuil模块使用方法总结
Jul 26 Python
Django中的用户身份验证示例详解
Aug 07 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python正则表达式指南 推荐
2018/10/09 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
django数据库自动重连的方法实例
2019/07/21 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python写一个随机点名软件的实例
2019/11/28 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
python Pexpect模块的使用
2020/12/25 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
学生安全责任书
2014/04/15 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
股东大会通知
2015/04/24 职场文书
结婚主持人致辞
2015/07/28 职场文书
2016春节放假通知范文
2015/08/18 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript