1.大概流程。
@首先在完善登陆页面,增加忘记密码的链接。
@为了账户安全,需要对操作者进行验证,向邮箱发随机数验证!
@在重置验证码页面,验证验证码是否匹配(验证成功跳转至更改密码也页面)。
@ 重置密码成功后重新进入到登录页面。
—————————————————————————————————————————————————
配置服务器邮箱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”。
另外在服务器邮箱中有两处配置:(当打开这两个配置的时候你大概就能看到授权码了ps:示例是qq邮箱 其他邮箱因情况而定 )
如下是生成随机数和发送邮件的方法!
#随机生成验证码 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())
原文出自:https://segmentfault.com/a/1190000020044479?utm_source=tag-newest