成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Django搭建個人博客:重置用戶密碼

mumumu / 743人閱讀

摘要:本章講如何幫助健忘癥患者,重置用戶密碼。實際上不僅內(nèi)置了密碼重置,還包括登錄登出密碼修改等功能??偨Y(jié)本章學習了使用第三方庫,高效完成了重置密碼的功能。有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。

隨著技術(shù)的發(fā)展,驗證用戶身份的手段越來越多,指紋、面容、聲紋應有盡有,但密碼依然是最重要的手段。

互聯(lián)網(wǎng)處處都有密碼的身影,甚至變成了現(xiàn)代人的一種負擔。像筆者這樣的,動輒幾十個賬號密碼,忘記其中幾個簡直太正常了。

本章講如何幫助健忘癥患者,重置用戶密碼。

安裝第三方庫

前面我們已經(jīng)知道如何修改文章標題、正文等內(nèi)容,但是密碼作為驗證身份的重要口令,必須以更加穩(wěn)妥的方式修改。一種比較常用的方式是發(fā)送一封修改密碼的郵件到用戶事先綁定的郵箱里。

業(yè)務流程分析如下:

向用戶郵箱發(fā)送包含重置密碼地址的郵件。郵件的地址需要動態(tài)生成,防止不懷好意的用戶從中搗亂;

向網(wǎng)站用戶展示一條發(fā)送郵件成功的信息;

用戶點擊郵箱中的地址后,轉(zhuǎn)入重置密碼的頁面;

向用戶展示一條重置成功的信息。

上面4個步驟包含了4個視圖和模板,自己寫代碼看來有些繁瑣。

可能你會想,Django這種以開發(fā)效率著稱的框架,重置密碼這種常用功能是不是內(nèi)置了呢?答案是肯定的。事實上內(nèi)置模塊的流程和上面的是完全相同的,你只需要將上面4個步驟的url配置好就可以使用了。當然內(nèi)置的模板很簡陋,你可以覆寫模板變成自己網(wǎng)站的風格。

實際上Django不僅內(nèi)置了密碼重置,還包括登錄、登出、密碼修改等功能。建議讀者到一定水平后多閱讀Django的源碼,學習其中的編程技巧。另外這部分內(nèi)容Django是用類視圖寫的,現(xiàn)在閱讀可能有一定困難。

源碼位置:/env/Lib/site-packages/django/contrib/auth/views.py

官方文檔:Django 的驗證系統(tǒng)

使用內(nèi)置的模塊似乎要簡單多了,那還能不能更簡單呢?確實是可以的。

Django作為優(yōu)秀的Web框架,有很多優(yōu)秀的第三方庫(即APP)被世界各地的程序員們打包發(fā)布在網(wǎng)上,免費供你使用。成功從來都是站在巨人的肩膀上的,既然已經(jīng)有了“輪子”,何必要自己再造一個呢。

我們這里就可以用到一個叫Django-password-reset的第三方庫。

打開虛擬環(huán)境,輸入指令pip install -U django-password-reset

(env) E:django_projectmy_blog>pip install -U django-password-reset

Collecting django-password-reset
...
Installing collected packages: django-password-reset
Successfully installed django-password-reset-2.0

看到以上信息說明安裝成功了。

快速使用

既然第三方庫也是app,那肯定需要在/my_blog/settings.py中注冊了:

/my_blog/settings.py

...
INSTALLED_APPS = [
    ...
    
    "password_reset",    # 新增

    "article",
    "userprofile",
]
...

在根路由/my_blog/urls.py中添加app的地址:

/my_blog/urls.py

...
urlpatterns = [
    ...
    path("password-reset/", include("password_reset.urls")),
]

修改/templates/userprofile/login.html,提供一個重置密碼的入口:

/templates/userprofile/login.html

...
...
...

忘記密碼了?
點擊這里重置密碼
...

郵件不能憑空產(chǎn)生,目前為止我們并沒有配置發(fā)件郵箱的賬號密碼,也沒有配置發(fā)送郵件的端口、發(fā)件人等信息。

因此還需要在/my_blog/settings.py末尾添加發(fā)送郵箱的相關(guān)配置:

/my_blog/settings.py

...

# SMTP服務器,改為你的郵箱的smtp
EMAIL_HOST = "smtp.qq.com"
# 郵箱名
EMAIL_HOST_USER = "dusaiphoto@foxmail.com"
# 郵箱密碼
EMAIL_HOST_PASSWORD = "你的郵箱密碼"
# 發(fā)送郵件的端口
EMAIL_PORT = 25
# 是否使用 TLS
EMAIL_USE_TLS = True
# 默認的發(fā)件人
DEFAULT_FROM_EMAIL = "杜賽的個人網(wǎng)站 "
簡單郵件傳輸協(xié)議 (Simple Mail Transfer Protocol, SMTP) 是在Internet傳輸Email的協(xié)議標準。

SMTP是基于文本的協(xié)議。在其之上指定了一條消息的一個或多個接收者,然后消息文本會被傳輸。SMTP使用TCP端口25。

SMTP是一個“推”的協(xié)議(發(fā)送郵件),它不允許從遠程服務器上“拉”來消息(接收郵件)。要接收郵件,客戶端必須使用POP3IMAP。

設(shè)置好后就可以開啟服務器測試了。

點擊登錄頁面:

點擊最后一行的鏈接“這里”:

按照要求輸入用戶名或者Email,點擊確認按鈕:

提示已經(jīng)把重置密碼的鏈接發(fā)到郵箱中了。

前往Email中查看新郵件:

居然神奇的收到了郵件!繼續(xù)點擊郵件中的鏈接:

按照提示輸入新密碼后:

密碼重置就成功了。

嘗試一下新密碼登錄是沒問題的,順利完成了任務。

篇幅關(guān)系就沒有去挨個覆寫原有的模板文件了。如果有興趣可以仔細閱讀官方文檔,嘗試去改寫模板文件,讓頁面更加匹配自己網(wǎng)站的風格。

官方文檔在這里:docs

GitHub:django-password-reset

相信讀者也嘗到使用三方庫的甜頭了:只需要寫很少的代碼,就可以完成大量的功能。筆者是推薦在開發(fā)中多使用優(yōu)秀的三方庫的,可以極大的提高效率,減少重復勞動。當然使用三方庫也有一些缺點,比如會因為一知半解而維護困難、不能量身定制等。在實踐中到底用還是不用,就根據(jù)實際情況再做權(quán)衡了。

后面陸續(xù)還會介紹更多的三方庫,還是貫徹那句話:成功是站在巨人肩膀上的。

常見錯誤

發(fā)送郵件因為涉及到了發(fā)送郵箱的相關(guān)設(shè)置和權(quán)限,所以容易出各種各樣奇怪的問題。

好比說你的發(fā)送郵箱設(shè)置是xxx@sina.com。項目代碼都是對的,但是新浪禁止了smtp服務,那郵件也會發(fā)送不成功。如果報錯請嘗試以下方法:

設(shè)置發(fā)送郵箱為允許smtp服務

檢查賬號、密碼是否正確

有的發(fā)送端口需要額外的設(shè)置,嘗試更換端口

更換其他服務商的郵箱

如果還不行,就請根據(jù)報錯頁面,搜索一下類似問題的解決方案了。

總結(jié)

本章學習了使用第三方庫django-password-reset,高效完成了重置密碼的功能。

下一章學習擴展并更新用戶資料。

有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。

或Email私信我:dusaiphoto@foxmail.com

項目完整代碼:Django_blog_tutorial

轉(zhuǎn)載請告知作者并注明出處。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44941.html

相關(guān)文章

  • Django搭建個人博客:用django-allauth實現(xiàn)第三方登錄

    摘要:比較流行的解決方案是允許用戶通過第三方登錄,即可以通過微博這類知名社區(qū)的授權(quán),從而登錄你的小站,免去了注冊的麻煩。微博微信的登錄方式大致都遵循這個流程本章雖然加載了微博的接口,但是限于篇幅并沒有配置,請讀者查閱官方文檔去實現(xiàn)。 現(xiàn)在我們已經(jīng)擁有一個可以進行用戶本地登錄的博客系統(tǒng)了。如果有人欣賞你的文章,說不定就會注冊成為本地用戶,并和你好好交流一番。 但頭疼的是,用戶可能每天都在互聯(lián)網(wǎng)...

    waruqi 評論0 收藏0
  • 個人博客四|注冊登錄退出功能后臺開發(fā)

    摘要:聲明本博客的注冊登錄退出功能將使用,參考資源如下文檔教程安裝配置信息安裝后設(shè)置,將相關(guān)加入到里去。指定與特定配置文件相關(guān)聯(lián)的對象之數(shù)據(jù)庫的。因此并沒有提供用戶詳情應用用戶詳情請參考個人博客五用戶個人資料擴展 聲明:本博客的注冊登錄退出功能將使用django-allauth,參考資源如下:django-allauth文檔django-allauth教程 1、安裝django-allau...

    Darkgel 評論0 收藏0
  • 個人博客四|注冊登錄退出功能后臺開發(fā)

    摘要:聲明本博客的注冊登錄退出功能將使用,參考資源如下文檔教程安裝配置信息安裝后設(shè)置,將相關(guān)加入到里去。指定與特定配置文件相關(guān)聯(lián)的對象之數(shù)據(jù)庫的。因此并沒有提供用戶詳情應用用戶詳情請參考個人博客五用戶個人資料擴展 聲明:本博客的注冊登錄退出功能將使用django-allauth,參考資源如下:django-allauth文檔django-allauth教程 1、安裝django-allau...

    sushi 評論0 收藏0
  • Django搭建個人博客用戶的注冊

    摘要:既然有登錄登出,那么用戶的注冊肯定也是少不了的。用戶在注冊成功后會自動登錄并返回博客列表頁面??偨Y(jié)本章用到了表單類對數(shù)據(jù)進行驗證清洗等知識,完成了用戶的注冊功能。 既然有登錄登出,那么用戶的注冊肯定也是少不了的。 注冊表單類 用戶注冊時會用到表單來提交賬號、密碼等數(shù)據(jù),所以需要寫注冊用的表單/userprofile/forms.py: /userprofile/forms.py .....

    leanote 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<