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中线程编程之threading模块的使用详解
Jun 23 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
python中装饰器级连的使用方法示例
Sep 29 Python
python2 与python3的print区别小结
Jan 16 Python
用python编写第一个IDA插件的实例
May 29 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
在Django中使用MQTT的方法
May 10 Python
python 算法题——快乐数的多种解法
May 27 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
2020最新CPU的性能排名
2020/04/02 数码科技
php中的登陆login
2007/01/18 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
关于Layui Table隐藏列问题
2019/09/16 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python学生管理系统开发
2019/01/30 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
Python计算信息熵实例
2020/06/18 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
斯福泰克软件测试面试题
2015/02/16 面试题
小学信息技术教学反思
2014/02/10 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
关于环保的建议书400字
2014/03/12 职场文书
保护动物的标语
2014/06/11 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
防汛工作情况汇报
2014/10/28 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang