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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
Python入门之modf()方法的使用
May 15 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
Python守护进程实现过程详解
Feb 10 Python
python列表的逆序遍历实现
Apr 20 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 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数组操作
2011/12/30 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
值得收藏的10道python 面试题
2019/04/15 Python
python中的colorlog库使用详解
2019/07/05 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
python 实现两个npy档案合并
2020/07/01 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
儿子婚宴答谢词
2014/01/09 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
医院科室评语
2015/01/04 职场文书
新学期开学标语2015
2015/07/16 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
python实现局部图像放大
2021/11/17 Python
Python列表的索引与切片
2022/04/07 Python