成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django搭建個(gè)人博客:重置用戶密碼

mumumu / 702人閱讀

摘要:本章講如何幫助健忘癥患者,重置用戶密碼。實(shí)際上不僅內(nèi)置了密碼重置,還包括登錄登出密碼修改等功能??偨Y(jié)本章學(xué)習(xí)了使用第三方庫(kù),高效完成了重置密碼的功能。有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。

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

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

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

安裝第三方庫(kù)

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

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

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

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

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

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

上面4個(gè)步驟包含了4個(gè)視圖和模板,自己寫(xiě)代碼看來(lái)有些繁瑣。

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

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

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

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

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

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

我們這里就可以用到一個(gè)叫Django-password-reset的第三方庫(kù)。

打開(kāi)虛擬環(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

看到以上信息說(shuō)明安裝成功了。

快速使用

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

/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,提供一個(gè)重置密碼的入口:

/templates/userprofile/login.html

...
...
...

忘記密碼了?
點(diǎn)擊這里重置密碼
...

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

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

/my_blog/settings.py

...

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

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

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

設(shè)置好后就可以開(kāi)啟服務(wù)器測(cè)試了。

點(diǎn)擊登錄頁(yè)面:

點(diǎn)擊最后一行的鏈接“這里”:

按照要求輸入用戶名或者Email,點(diǎn)擊確認(rèn)按鈕:

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

前往Email中查看新郵件:

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

按照提示輸入新密碼后:

密碼重置就成功了。

嘗試一下新密碼登錄是沒(méi)問(wèn)題的,順利完成了任務(wù)。

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

官方文檔在這里:docs

GitHub:django-password-reset

相信讀者也嘗到使用三方庫(kù)的甜頭了:只需要寫(xiě)很少的代碼,就可以完成大量的功能。筆者是推薦在開(kāi)發(fā)中多使用優(yōu)秀的三方庫(kù)的,可以極大的提高效率,減少重復(fù)勞動(dòng)。當(dāng)然使用三方庫(kù)也有一些缺點(diǎn),比如會(huì)因?yàn)橐恢虢舛S護(hù)困難、不能量身定制等。在實(shí)踐中到底用還是不用,就根據(jù)實(shí)際情況再做權(quán)衡了。

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

常見(jiàn)錯(cuò)誤

發(fā)送郵件因?yàn)樯婕暗搅税l(fā)送郵箱的相關(guān)設(shè)置和權(quán)限,所以容易出各種各樣奇怪的問(wèn)題。

好比說(shuō)你的發(fā)送郵箱設(shè)置是[email protected]。項(xiàng)目代碼都是對(duì)的,但是新浪禁止了smtp服務(wù),那郵件也會(huì)發(fā)送不成功。如果報(bào)錯(cuò)請(qǐng)嘗試以下方法:

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

檢查賬號(hào)、密碼是否正確

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

更換其他服務(wù)商的郵箱

如果還不行,就請(qǐng)根據(jù)報(bào)錯(cuò)頁(yè)面,搜索一下類似問(wèn)題的解決方案了。

總結(jié)

本章學(xué)習(xí)了使用第三方庫(kù)django-password-reset,高效完成了重置密碼的功能。

下一章學(xué)習(xí)擴(kuò)展并更新用戶資料。

有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。

或Email私信我:[email protected]

項(xiàng)目完整代碼:Django_blog_tutorial

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44941.html

相關(guān)文章

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

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

    waruqi 評(píng)論0 收藏0
  • 個(gè)人博客四|注冊(cè)登錄退出功能后臺(tái)開(kāi)發(fā)

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

    Darkgel 評(píng)論0 收藏0
  • 個(gè)人博客四|注冊(cè)登錄退出功能后臺(tái)開(kāi)發(fā)

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

    sushi 評(píng)論0 收藏0
  • Django搭建個(gè)人博客用戶的注冊(cè)

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

    leanote 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<