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处理PHP数组文本文件实例
Sep 18 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python 多线程死锁问题的解决方案
Aug 25 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
Django路由层如何获取正确的url
Jul 15 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
构建简单的Webmail系统
2006/10/09 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
php控制文件下载速度的方法
2015/03/24 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
javascript连续赋值问题
2015/07/08 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
Django 项目重命名的实现步骤解析
2019/08/14 Python
python模块导入的方法
2019/10/24 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python 画函数曲线示例
2019/12/04 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
html5 标签
2009/07/16 HTML / CSS
怎样有效的进行自我评价
2013/10/06 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis