Django利用第三方应用重置密码

        重置密码基本上是网站的标配,在这里同样介绍2种重置密码的方法

一.使用第三方应用,django-password-reset

        django有很多优秀好用的第三方应用,其中就有一个是用来重置密码的,使用了一下发现非常好用,只有49k大小.首先是用pip install  django-password-reset来安装,我们打开其官方文档查看用法如下:                       

            首先它是一个应用,需要将其安装到settings中,然后在urls中引入,用的时候调用即可.我的配置如下:


            在需要重置密码的时候输入http://127.0.0.1:8001/pwd_reset/recover/会出现调用画面.输入框里可以输入用户名或者邮箱,然后就可以很方便的调用.但是,一个大坑来了,如果这样设置后,会报错,如下:


            查看源码问题后,发现问题出现在这里:


            在这个第三方应用里编写的路径都是{% url ‘password_reset_reset’ %}之类的,password_reset_reset为你urls里各个路径的名字name,由于我们在首页路径里加了前缀pwd_reset,所以应用里所有的都无法找到准确路径,自动缺失app_name.

            解决办法是在你总urls里去掉前缀pwd_reset,设置为空,即可解决


二.使用django内置函数来进行密码重置

            django有内置的login,logout,当然也有reset等方法,查看文档即源码,会发现其用法,这里不做过多讲解.

            会用到如下views:

password_reset:用于重置密码
password_reset_done:用于重置密码后的显示
password_reset_confirm:用于更新新密码
password_reset_complete:用于成功更新密码

            同登录内置函数一样,如果你更改了templates,需要提供模板,以及重定向位置,具体原理见源码,这里面password_reset以及password_reset_confirm需要提供重定向post_reset_redirect,剩下的我们自己重写前段模板即可.需要注意的password_reset不仅需要提供template_name模板,还需要提供email_template_name,发送的邮件页面,subject_template_name邮件的txt文件.

            在email_template_name中,我们编写的需要用户确定的点击链接为

{{ protocol }}://{{ domain }}{% url 'account:password_reset_confirm' uidb64=uid token=token%}
   
   
            protocol为你的http协议,domain为你的地址, uidb64=uid token=token为你的身份钥匙.只有邮件收件者点击这个链接才能确认这个邮箱身份.

        因此,urls里password_reset_confirm的url如下:

url(r'password-reset-confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$',.........)
   
   

        都设置好后需要在settings里设置你的邮箱格式,我的如下:


   
   
  1. EMAIL_HOST = 'smtp.163.com'
  2. EMAIL_HOST_USER = '.....@163.com'
  3. EMAIL_HOST_PASSWORD = '.......'
  4. EMAIL_PORT = 25
  5. EMAIL_USE_TLS = True
  6. DEFAULT_FROM_EMAIL = '.......@163.com'
  7. EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
最后一个EMAIL_BACKEND的作用是将邮件直接显示在控制台,对于开发来说非常有用,在后期生产环境时,要注意去掉








注意:登录的时候url中填写http://10.0.118.86:12350/recover/
转载:https://blog.csdn.net/guyunzh/article/details/79461594

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值