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爬虫抓取手机APP的传输数据
Jan 22 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
python pycurl验证basic和digest认证的方法
May 02 Python
python+flask实现API的方法
Nov 21 Python
利用python如何在前程无忧高效投递简历
May 07 Python
python进程和线程用法知识点总结
May 28 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
Python生成随机验证码代码实例解析
Jun 09 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
python编程实现清理微信重复缓存文件
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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
Javascript变量函数浅析
2011/09/02 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Python读写Excel文件的实例
2013/11/01 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
Python3.6简单反射操作示例
2018/06/14 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
三爱活动实施方案
2014/03/19 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
综艺节目策划方案
2014/06/13 职场文书
劳模先进事迹材料
2014/12/24 职场文书
奖学金感谢信
2015/01/21 职场文书
财务人员个人工作总结
2015/02/27 职场文书
小学英语听课心得体会
2016/01/14 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python