首先我們要想用Django內置的重置密碼的功能,我們要知道Django內置的函數是怎么寫的
def password_reset(request, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.txt', password_reset_form=PasswordResetForm, token_generator=default_token_generator, post_reset_redirect=None, from_email=None, extra_context=None, html_email_template_name=None, extra_email_context=None):
在這個函數中我們目前只需知道四個參數即可,分別是template_name,email_template_name,subject_template_name,post_reset_redirect,我們一個一個來說。
第一個:template_name:這個參數代表的是發送的郵件的頁面的位置。例如:我把前台頁面放在了templates下的account里面了,那么此處就應該寫成:account/頁面名字.html
第二個:email_template_name:這個參數代表的是你要給這個郵箱發送的內容。寫法同上
第三個:subject_template_name:這個參數代表的是你要發的郵箱的主題,這個地方在前台存的不是htnl頁面,是一個txt文檔
第四個:post_reset_redirect:這個參數代表的是我們在放松玩郵箱之后頁面要跳轉的頁面是哪一個,注意:此處的路徑一定不要寫錯了。
在此處,我們可以選擇Django內置函數的模板,你可以去你電腦的虛擬環境下的lib\site-packages\django\contrib\admin\templates這個目錄下找到registration找到重置密碼的幾個頁面
我們可以把這幾個頁面復制到我們的項目中去,根據我們自己的需求去修改,然后在應用中的urls添加對應的ur:
url(r'^password-reset/$', auth_views.password_reset, {"template_name": "改成自己的路徑", "email_template_name": "改成自己的路徑", "subject_template_name": "改成自己的路徑", "post_reset_redirect": "改成自己的路徑"}, name="password_reset"), url(r'^password-reset-done/$', auth_views.password_reset_done, {"template_name": "改成自己的路徑"}, name="password_reset_done"), url(r'^password-reset-confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$', auth_views.password_reset_confirm, {"template_name": "改成自己的路徑", "post_reset_redirect": "改成自己的路徑"}, name="password_reset_confirm"), url(r'^password-reset-complete/$', auth_views.password_reset_complete, {"template_name": "改成自己的路徑"}, name="password_reset_complete"),
然后你啟動服務器,就可以在前台頁面看到放松郵件的頁面了。
你以為這樣就萬事大吉了,NO,NO,NO。
你還需要在項目的settings.py文件的末尾添加下面這些:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #把要發送的郵件顯示再控制台上,方便調試 EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com EMAIL_PORT = 465 EMAIL_HOST_USER = '要發送郵箱的賬號' # 帳號 EMAIL_HOST_PASSWORD = '郵箱的授權碼' # 密碼 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
走到這一步我們才算大功告成了。But
我們需要注意的是我們既然用的是Django的內置函數來重置密碼,那么我們設置密碼的要求也是比較嚴格得了,也就是不能太普通,不能太簡單等等一系列的要求了。
到此,我們就算是完成了重置密碼的功能了。