Django實現(xiàn)發(fā)送郵件找回密碼功能
在各大網(wǎng)站上,一定都遇到過找回密碼的問題,通常采用的方式是通過發(fā)送帶有驗證碼的郵件進行身份驗證,本文將介紹通過Django實現(xiàn)郵件找回密碼功能。
找回密碼流程
功能流程:
1.首先在用戶登錄界面,添加“忘記密碼”鏈接
2.生成隨機驗證碼,發(fā)送郵件到用戶信息中填寫郵箱
3.在重置密碼頁面,驗證填寫驗證碼是否需匹配
4.重置密碼成功,重新進入到登錄頁面
技術(shù)點:
1.發(fā)送郵件使用Django內(nèi)置的django.core.mail實現(xiàn)
2.重置密碼頁面驗證驗證碼填寫是否匹配,提前將發(fā)送的驗證碼進行緩存,再進行匹配
發(fā)送郵件配置
在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根據(jù)郵箱進行設(shè)置,如果為QQ郵箱,即“smtp.qq.com”。
另外在郵箱中有兩處配置:
1.開啟POP3/SMTP服務(wù)(設(shè)置->POP3/SMTP/IMAP)

2.配置中的密碼并不是郵箱的登錄密碼,填寫的是授權(quán)碼

發(fā)送郵件實現(xiàn)
在應(yīng)用(user)下的views.py中,進行驗證碼的生成與發(fā)送郵件操作。這里關(guān)于基礎(chǔ)項目搭建、路由配置不再進行贅述。
生成隨機驗證碼方法:
#隨機生成驗證碼 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
發(fā)送郵件方法:
#發(fā)送郵件找回密碼
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="驗證碼已發(fā)送,請查收郵件"
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())
總結(jié)
以上所述是小編給大家介紹的Django實現(xiàn)發(fā)送郵件找回密碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python通過psd-tools解析PSD文件的實現(xiàn)
本文主要介紹了Python通過psd-tools解析PSD文件的實現(xiàn),主要包括如何獲取PSD文件的基本信息、遍歷圖層、提取圖層詳細信息、保存和創(chuàng)建PSD文件,感興趣的可以了解一下2023-12-12
Python海龜turtle基礎(chǔ)知識大全以及畫圖集合實例
turtle是一個簡單的繪圖工具,它提供了一個海龜,你可以把它理解為一個機器人,只聽得懂有限的指令,下面這篇文章主要給大家介紹了關(guān)于Python海龜turtle基礎(chǔ)知識大全以及畫圖集合的相關(guān)資料,需要的朋友可以參考下2023-04-04
Python應(yīng)用案例之利用opencv實現(xiàn)圖像匹配
OpenCV 是一個的跨平臺計算機視覺庫,可以運行在 Linux、Windows 和 Mac OS 操作系統(tǒng)上,這篇文章主要給大家介紹了關(guān)于Python應(yīng)用案例之利用opencv實現(xiàn)圖像匹配的相關(guān)資料,需要的朋友可以參考下2024-08-08
10分鐘用python搭建一個超好用的CMDB系統(tǒng)
這篇文章主要介紹了10分鐘用python搭建一個超好用的CMDB系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
pytorch 在網(wǎng)絡(luò)中添加可訓(xùn)練參數(shù),修改預(yù)訓(xùn)練權(quán)重文件的方法
今天小編就為大家分享一篇pytorch 在網(wǎng)絡(luò)中添加可訓(xùn)練參數(shù),修改預(yù)訓(xùn)練權(quán)重文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
5 分鐘讀懂Python 中的 Hook 鉤子函數(shù)
這篇文章主要介紹了5 分鐘掌握 Python 中的 Hook 鉤子函數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
python sklearn中tsne算法降維結(jié)果不一致問題的解決方法
最近在做一個文本聚類的分析,在對文本數(shù)據(jù)embedding后,想著看下數(shù)據(jù)的分布,于是用sklearn的TSNE算法來降維embedding后的數(shù)據(jù)結(jié)果,當(dāng)在多次執(zhí)行后,竟發(fā)現(xiàn)TSNE的結(jié)果竟然變了,而且每次都不一樣,所以本文就給大家講講如何解決sklearn中tsne算法降維結(jié)果不一致的問題2023-10-10
python?random模塊常用函數(shù)基礎(chǔ)教程
這篇文章主要為大家介紹了python?random模塊常用函數(shù)基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06

