91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django實現發送郵件找回密碼功能

發布時間:2020-08-28 08:56:00 來源:腳本之家 閱讀:261 作者:離島 欄目:開發技術

在各大網站上,一定都遇到過找回密碼的問題,通常采用的方式是通過發送帶有驗證碼的郵件進行身份驗證,本文將介紹通過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實現發送郵件找回密碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄石市| 巴林左旗| 黔南| 万载县| 福泉市| 平山县| 虹口区| 桐庐县| 凤凰县| 利辛县| 东辽县| 昌都县| 临沭县| 澜沧| 定安县| 连平县| 保定市| 砚山县| 芜湖市| 思茅市| 台湾省| 平湖市| 普宁市| 中卫市| 饶阳县| 湘潭市| 唐河县| 临沂市| 祁东县| 会昌县| 郧西县| 繁昌县| 呼玛县| 昌图县| 丰原市| 聂拉木县| 中卫市| 南部县| 定南县| 武乡县| 嘉黎县|