首頁 後端開發 Python教學 django 開發忘記密碼透過郵箱找回功能範例_python

django 開發忘記密碼透過郵箱找回功能範例_python

Apr 17, 2018 am 11:46 AM
django 密碼 透過

這篇文章主要介紹了django 開發忘記密碼透過郵箱找回功能範例,現在分享給大家,也給大家做個參考。一起來看看吧

一、流程分析:

#1.點選忘記密碼====》forget.html頁面,輸入郵箱和驗證碼,發送驗證連結網址的郵件====》發送成功,跳到send_success.html提示

2.到郵箱裡找到驗證連結網址,訪問重設密碼網址reset.html= ==》重設密碼提交數據,成功則返回首頁,失敗則返回錯誤訊息

#二、

1.users/forms .py檔案中

from django import forms
from captcha.fields import CaptchaField


.......

#forget.html中,用于验证邮箱格式和验证码
class ForgetForm(forms.Form):
  email=forms.EmailField(required=True)
  captcha=CaptchaField(error_messages={'invalid':'验证码错误'})

#reset.html中,用于验证新设的密码长度是否达标
class ResetForm(forms.Form):
  newpwd1=forms.CharField(required=True,min_length=6,error_messages={'required': '密码不能为空.', 'min_length': "至少6位"})
  newpwd2 = forms.CharField(required=True, min_length=6, error_messages={'required': '密码不能为空.', 'min_length': "至少6位"})
登入後複製

2.users/views.py中相關程式碼:

##

......
from django.shortcuts import render,redirect
from django.http import HttpResponse
from users.form import ForgetForm,ResetForm
from .models import UserProfile
from django.contrib.auth.hashers import make_password
from apps.utils.email_send import send_register_email
from .models import EmailVerifyRecord

......

class ForgetPwdView(View):
  '''忘记密码'''
  def get(self,request):
    forget_form=ForgetForm()
    return render(request,'forget.html',{'forget_form':forget_form})
  def post(self,request):
    forget_form = ForgetForm(request.POST)
    if forget_form.is_valid():
      email=request.POST.get('email','')
      send_register_email(email,'forget')
      return render(request,'send_success.html')
    else:
      return render(request,'forget.html',{'forget_form':forget_form})


class ResetView(View):
  '''重置密码'''
  def get(self,request,active_code):
    record=EmailVerifyRecord.objects.filter(code=active_code)
    print(record)
    if record:
      for i in record:
        email=i.email
        is_register=UserProfile.objects.filter(email=email)
        if is_register:
          return render(request,'pwd_reset.html',{'email':email})
    return redirect('index')


#因为<form>表单中的路径要是确定的,所以post函数另外定义一个类来完成
class ModifyView(View):
  """重置密码post部分"""
  def post(self,request):
    reset_form=ResetForm(request.POST)
    if reset_form.is_valid():
      pwd1=request.POST.get(&#39;newpwd1&#39;,&#39;&#39;)
      pwd2=request.POST.get(&#39;newpwd2&#39;,&#39;&#39;)
      email=request.POST.get(&#39;email&#39;,&#39;&#39;)
      if pwd1!=pwd2:
        return render(request,&#39;pwd_reset.html&#39;,{&#39;msg&#39;:&#39;密码不一致!&#39;})
      else:
        user=UserProfile.objects.get(email=email)
        user.password=make_password(pwd2)
        user.save()
        return redirect(&#39;index&#39;)
    else:
      email=request.POST.get(&#39;email&#39;,&#39;&#39;)
      return render(request,&#39;pwd_reset.html&#39;,{&#39;msg&#39;:reset_form.errors})
登入後複製

#3.新forget.html, success_send.html, pwd_reset.html

#forget.html

<!DOCTYPE html>
{% load staticfiles %}
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>忘记密码</title>

<style>
.out{
  width: 500px;
  height: 900px;
  margin: 0 auto;
  margin-top: 100px;
}
</style>
</head>
<body>


  <p class="out">
    <h1>真粗心,忘了密码吧?快通过邮箱找回密码吧!</h1>
    <form method="post" action="{% url &#39;forget_pwd&#39; %}">
      <P><span>邮箱:</span><input type="text" name="email"></P>
      <P><span>验证码:</span>{{ forget_form.captcha }}</P>
      {% csrf_token %}
      <p><input type="submit" value="确认发送验证邮件"></p>
    </form>
    <h1>{{ forget_form.errors }}</h1>
  </p>


</body>
</html>
登入後複製

##success_send.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>发送邮件成功,快去邮箱查看吧!(收件箱没有,垃圾箱一定有……)</h1>
</body>
</html>
登入後複製

#pwd_reset.html

<!DOCTYPE html>
{% load staticfiles %}
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>重置密码</title>

<style>
.out{
  width: 500px;
  height: 900px;
  margin: 0 auto;
  margin-top: 100px;
}
</style>
</head>
<body>


  <p class="out">
    <h1>可以重新设置一个好记的新密码啦!</h1>
    <form method="post" action="{% url &#39;modify&#39; %}">
      <P><span>新密码:</span><input type="password" name="newpwd1" placeholder="至少6位"></P>
      <P><span>确认新密码:</span><input type="password" name="newpwd2" placeholder="至少6位"></P>
      {% csrf_token %}
      <input type="hidden" name="email" value="{{ email }}">
      <p><input type="submit" value="确认"></p>
    </form>
    <h1>{{ msg }}</h1>
  </p>

</body>
</html>
登入後複製

4.設定相關的urls.py :

from users.views import ForgetPwdView,ResetView,ModifyView

......

urlpatterns = [
  .....

  #忘记密码
  path(&#39;forget/&#39;,ForgetPwdView.as_view(),name=&#39;forget_pwd&#39;),
  #重置密码
  path(&#39;reset/<str:active_code>&#39;,ResetView.as_view(),name=&#39;reset&#39;),
  path(&#39;modify/&#39;,ModifyView.as_view(),name=&#39;modify&#39;),


  ......
]
登入後複製

運行項目,點擊忘記密碼連結(),就可以完成透過信箱找回密碼的功能囉!

5.send_register_email()方法及其配置詳見上一篇文章

#相關推薦:


django 透過ajax完成郵箱使用者註冊、啟動帳號的方法

詳解Django之auth模組(使用者認證)

##

以上是django 開發忘記密碼透過郵箱找回功能範例_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
win11提示若要繼續,請輸入管理員使用者名稱和密碼怎麼解決? win11提示若要繼續,請輸入管理員使用者名稱和密碼怎麼解決? Apr 11, 2024 am 09:10 AM

當使用Win11系統時,有時會遇到需要輸入管理員使用者名稱和密碼的提示,本文將探討在遇到這種情況時應該如何處理。方法一:1、點選【Windows標誌】,然後按【Shift+重啟】進入安全模式;或這樣進入安全模式:點選開始選單,選擇設定。選擇「更新與安全」;選擇「恢復」中的「立即重新啟動」;重新啟動進入選項後選擇-疑難排解-進階選項-啟動設定—&mdash

如何為您的Microsoft帳號使用Passkey 如何為您的Microsoft帳號使用Passkey Feb 19, 2024 am 11:03 AM

Passkey是一種更進階且安全的登入方式,可搭配Microsoft帳號使用。本文將指導您如何在Microsoft帳號中使用Passkey,介紹其優勢以及與密碼的差異。在深入細節之前,我們強調,如果您經常忘記密碼或需要快速登錄,Passkey通常會更適合您。什麼是Passkey?它們與密碼有什麼不同?密碼是一種進階且安全的身份驗證方式,可以取代傳統的密碼登入方式。每個應用程式都有獨特的金鑰,確保安全性,防止網路釣魚等威脅。使用者可以透過電子郵件和密碼確認身份,也可使用臉部辨識、指紋或安全金鑰進行

如何使用手機設定路由器WiFi密碼(以手機為工具) 如何使用手機設定路由器WiFi密碼(以手機為工具) Apr 24, 2024 pm 06:04 PM

無線網路已成為人們生活中不可或缺的一部分、在當今數位化的世界中。保護個人無線網路的安全性卻顯得格外重要、然而。設定強密碼是確保你的WiFi網路不會被他人入侵的關鍵。保障你的網路安全,本文將詳細介紹如何使用手機修改路由器WiFi密碼。 1.開啟路由器管理頁面-在手機瀏覽器中開啟路由器管理頁面、透過輸入路由器的預設IP位址。 2.輸入管理員使用者名稱和密碼-以獲得存取權限,在登入頁面中輸入正確的管理員使用者名稱和密碼。 3.導覽至無線設定頁面-尋找並點選進入無線設定頁面,在路由器管理頁面中。 4.找到當前Wi

密碼不正確,小心BitLocker警告 密碼不正確,小心BitLocker警告 Mar 26, 2024 am 09:41 AM

本文將探討如何解決密碼錯誤的問題,特別是在處理BitLocker警告時需要小心。當在BitLocker中多次輸入錯誤密碼以解鎖磁碟機時,就會觸發這個警告。通常,這個警告出現是因為系統設定了限制錯誤登入嘗試的策略(通常是允許3次登入嘗試)。在這種情況下,使用者會收到相應的警告訊息。完整的警告訊息如下:輸入的密碼不正確,請注意-連續輸入錯誤密碼會導致帳戶被鎖定,這是為了保護您的資料安全。如果需要解鎖帳戶,您將需要使用BitLocker恢復金鑰。密碼不正確,小心BitLocker警告當您登入電腦時收到

手機修改wifi密碼教學(簡單操作) 手機修改wifi密碼教學(簡單操作) Apr 26, 2024 pm 06:25 PM

無線網路已成為我們生活中不可或缺的一部分、隨著網路的快速發展。為了保護個人資訊和網路安全,定期更改wifi密碼是非常重要的、然而。幫助大家更能保護家庭網路安全,本文將為大家介紹如何利用手機修改wifi密碼的詳細教學。 1.了解wifi密碼的重要性wifi密碼是保護個人資訊和網路安全的道防線,在網路時代、了解其重要性可以更好地理解為什麼需要定期修改密碼。 2.確認手機連接到wifi首先確保手機已連接到要修改密碼的wifi網路上,在修改wifi密碼之前。 3.開啟手機設定選單進入手機的設定選單、在手

如何為excel設定密碼 如何為excel設定密碼 Mar 21, 2024 am 09:00 AM

前幾天表弟找我訴苦說用excel辛苦做了一大堆數據,結果後來被同事給修改了,當時不知道情況,發給老闆後被臭罵了一頓。這確實挺讓人無奈的,有的人就是看你不順眼,就是想故意整你,離開學校步入社會以後,你會發現背後捅刀子的人越來越多。除了安慰表弟幾句以外,我還給了表弟一個意見,如果怕以後再遇到這樣的事情,那就把excel表格設定密碼,除了你可以打開以外,別人誰都打不開。廣大網友們,如果你也怕自己的excel表格被別人偷偷修改,也該設定密碼的。 excel密碼表格如何設定密碼?跟我一起來了解一下吧! 1.

win10開機密碼忘記按F2怎麼操作 win10開機密碼忘記按F2怎麼操作 Feb 28, 2024 am 08:31 AM

想必很多的用戶家裡都有那麼幾台不用的電腦,因為長時間不用完全忘了開機密碼,於是想知道一下,忘記密碼要怎麼操作呢?那就一起來看看吧。 win10開機密碼忘記按F2怎麼操作1、按下電腦的電源鍵,然後開機時按下F2(不同電腦品牌進入bios的按鍵也不同)。 2.在bios介面中,找到security選項(不同品牌電腦的位置可能有所不同)。一般都在頂部的設定選單中。 3.然後找到SupervisorPassword選項並且點選。 4.這時候用戶就可以看到自己的密碼了,同時找到旁邊的Enabled切換為Dis

win10電腦開機密碼忘了怎麼進入系統_win10電腦忘記開機密碼的處理方法 win10電腦開機密碼忘了怎麼進入系統_win10電腦忘記開機密碼的處理方法 Mar 28, 2024 pm 02:35 PM

1.在另一台電腦上下載安裝小白一鍵重裝系統工具,插入空u盤製作u盤啟動盤,具體的教程可以參考:2、把U盤啟動盤插到需要更改密碼的電腦重啟,按啟動熱鍵,一般啟動熱鍵為F12、F8、F9、F10、ESC其中一個。接著出現啟動介面,選擇U盤的選項回車進入。 3.選擇【1】啟動win10x64PE按回車確定。 4.選擇桌面上的密碼修改的工具,雙擊開啟。 5.接著出現帳戶名稱列表,選取需要更改密碼的帳戶開啟。 6.點選下方的修改密碼指令,輸入兩次新的密碼,然後點選OK,儲存變更。 7.最後拔掉U盤,重開機就可以正常

See all articles