Django 更改密碼
我們將學習如何建立一個網頁供使用者在登入 Django 網頁後更改密碼。
為使用者建立一個網頁以在 Django 中更改密碼
例如,我們在 Django 中有一個專案,我們將在這個專案中工作,我們有使用者的應用程式。在這個應用程式中,我們找到了 views.py
檔案,我們需要匯入兩個必要的檢視。
其中之一稱為 PasswordChangeView
,它允許我們更改密碼,PasswordResetDoneView
將確認密碼已被重置。
現在我們需要定義一個名為 MyPasswordChangeView
的類,它將繼承自 PasswordChangeView
;在這個類中,我們宣告瞭 template_name
變數並將模板 URL 儲存在使用者將更改密碼的位置。
在 success_url
變數中,我們需要放置 reverse_lazy()
變數。在程式碼下面,我們需要建立另一個名為 MyPasswordResetDoneView
的類,並從 PasswordResetDoneView
繼承它。
我們只在這個類中宣告瞭 template_name
變數,並將模板的路徑儲存到這個 template_name
變數中;然後,我們需要儲存它並在 urls.py
檔案中註冊這些檢視。
views.py
檔案:
from django.shortcuts import render
from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordChangeView, PasswordResetDoneView
class MyPasswordChangeView(PasswordChangeView):
template_name = "users/password-change.html"
success_url = reverse_lazy("users:password-change-done-view")
class MyPasswordResetDoneView(PasswordResetDoneView):
template_name = "users/password-reset-done.html"
我們將在使用者的應用程式中建立一個 urls.py
檔案,然後將我們的檢視匯入我們建立的檔案中。
然後我們需要建立一個名為 app_name
的變數,它等於 users
,這是我們的應用程式名稱。在該行下方,我們將建立一個 urlpatterns
列表,我們將在其中將檢視與 URL 整合。
我們將建立模板,但在移動任何地方之前,我們需要在 urls.py
檔案中包含主專案的 urlpatterns
的使用者路徑。讓我們在 movies
下面為使用者建立一個新路徑,namespace
應該與應用程式匹配;寫完程式碼,儲存。
現在我們可以回到使用者的應用程式,在這裡,讓我們建立一個 templates
資料夾;在 templates
中,我們將建立另一個名為 users
的資料夾。在 users
資料夾中,我們需要建立兩個我們在 views.py
檔案中定義的 HTML 檔案。
我們將開始處理 password-change.html
檔案,首先,從 base.html
繼承,然後,我們設定 block title
和 block content
這將由表單。讓我們把 form action
留空,方法等於 POST
,這意味著我們正在處理 POST
請求。
我們需要將 csrf_token
放入表單中,這將允許傳送請求。我們將建立一個按鈕並將此型別保持為 submit
,通過新增一個類使其成為綠色按鈕。
我們將處理 password-reset-done.html
,在這裡,我們再次需要從 base.html
檔案繼承;在此之後,方法將相同,但語法會有所不同。
然後我們將編寫一個 href
屬性並提供主檢視的路徑名稱,因此使用者將通過按下此按鈕來進行操作。
最後一件事是轉到 home.html
建立一個按鈕來訪問使用者將更改密碼的頁面。
伺服器正在執行,我們通過首頁去修改密碼,可以看到登入後使用者可以修改密碼了。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn