Django内置重置密码的功能(发邮箱)

Posted huxiaokang-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django内置重置密码的功能(发邮箱)相关的知识,希望对你有一定的参考价值。

首先我们要想用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内置函数的模板,你可以去你电脑的虚拟环境下的libsite-packagesdjangocontribadmin emplates这个目录下找到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的内置函数来重置密码,那么我们设置密码的要求也是比较严格得了,也就是不能太普通,不能太简单等等一系列的要求了。

 

到此,我们就算是完成了重置密码的功能了。

 

以上是关于Django内置重置密码的功能(发邮箱)的主要内容,如果未能解决你的问题,请参考以下文章

使用Django实现发邮件功能

Django 密码重置。不发邮件

django 1.3中的内置密码重置视图问题

Django内置模块auth实现认证功能代码

Django REST-Auth 密码重置

使用 Django 的密码重置通知用户电子邮件无效