Django 更改密碼

Salman Mehmood 2024年2月15日
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 整合。

建立一個變數和 urlpatterns

我們將建立模板,但在移動任何地方之前,我們需要在 urls.py 檔案中包含主專案的 urlpatterns 的使用者路徑。讓我們在 movies 下面為使用者建立一個新路徑,namespace 應該與應用程式匹配;寫完程式碼,儲存。

urls.py 檔案的 urlpatterns

現在我們可以回到使用者的應用程式,在這裡,讓我們建立一個 templates 資料夾;在 templates 中,我們將建立另一個名為 users 的資料夾。在 users 資料夾中,我們需要建立兩個我們在 views.py 檔案中定義的 HTML 檔案。

我們將開始處理 password-change.html 檔案,首先,從 base.html 繼承,然後,我們設定 block titleblock content 這將由表單。讓我們把 form action 留空,方法等於 POST,這意味著我們正在處理 POST 請求。

我們需要將 csrf_token 放入表單中,這將允許傳送請求。我們將建立一個按鈕並將此型別保持為 submit,通過新增一個類使其成為綠色按鈕。

塊標題和塊內容

我們將處理 password-reset-done.html,在這裡,我們再次需要從 base.html 檔案繼承;在此之後,方法將相同,但語法會有所不同。

然後我們將編寫一個 href 屬性並提供主檢視的路徑名稱,因此使用者將通過按下此按鈕來進行操作。

href 屬性

最後一件事是轉到 home.html 建立一個按鈕來訪問使用者將更改密碼的頁面。

更改密碼按鈕

伺服器正在執行,我們通過首頁去修改密碼,可以看到登入後使用者可以修改密碼了。

修改密碼輸出

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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