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编写vim插件的简单示例
Apr 17 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
python生成excel的实例代码
Nov 08 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
对Django外键关系的描述
Jul 26 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python实现AdaBoost算法的示例
Oct 03 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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 实现explort() 功能的详解
2013/06/20 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
实例解析angularjs的filter过滤器
2016/12/14 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
python使用生成器实现可迭代对象
2018/03/20 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
Python变量类型知识点总结
2019/02/18 Python
python使用建议与技巧分享(二)
2020/08/17 Python
python 怎样进行内存管理
2020/11/10 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
中专生自荐信
2013/10/12 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
新三好学生主要事迹
2014/01/23 职场文书
期中考试后的反思
2014/02/08 职场文书
英文演讲稿开场白
2014/08/25 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
小学副班长竞选稿
2015/11/21 职场文书
高中生物教学反思
2016/02/20 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript