为大家介绍一个django开发的利器,重置密码模块:django-password-reset,使用起来非常方便,但网上的相关资料很少,本人第一次使用,遇到了坑很深,所以特意和大家分享一下。
用django开发网站是个很方便的,并且有大量的第三方模块可以调用,django并没有内置的密码重置功能,一般网站的登陆界面都具有“忘了密码"的链接,django的密码都是加密保存的,所以当忘记了密码,就需要重置密码,按照常用的django开发步骤,需要写几个view函数,和模板页面,并需要大量的配置,但可以借用第三方模块,非常方便。
django-password-reset 的英文文档链接: http://django-password-reset.readthedocs.io/en/latest/
上图是文档中的,安装上图操作,只能完成20%,剩下的都是深坑。第三部的是个输入表单的链接,可以将他嵌入你的登陆页面。
下载安装django-password-reset
本人使用的是python3自带的pip安装的(本人也写了一篇关于pip的使用的文章,可以查看 http://blog.csdn.net/douzhenwen/article/details/78932074)。 大家也可以从github上下载源码,然后放在python/lib/site-packages目录下
django-password-reset的源码结构如下:
由于版本更迭的问题,需要将views中的第八行改为 from django.urls import reverse, reverse_lazy
然后就是配置文件中的setting
EMAIL_HOST = 'smtp.139.com'
EMAIL_HOST_USER = "iamlory@139.com"
EMAIL_HOST_PASSWORD='*************' #密码
EMAIL_PORT = 25
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = "iamlory@139.com"
EMAIL_BACKEND= "django.core.mail.backends.smtp.EmailBackend"
有些教程将上图最后的EAMIL_BACKEND给为让在终端输出邮件命令,但不会再邮箱中收到,
即改为
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
相应的邮箱,需要配置相应邮箱服务器的端口,和服务器,139邮箱的端口为25,服务器为smtp.139.com
qq邮箱的端口好像也是25 服务器为:smtp.qq.com 由于qq邮箱发送邮件需要授权码,所以可以在网上自行搜一下,将EMAIL_HOST_PASSWORD改为16位授权码,并改变相应端口和服务器即可,建议还是使用其他邮箱。
将图一中,第三步的链接放入一个网页中,做成按钮或链接。点击后将进入发送界面:
注意一下我的搜索栏的地址,如果你不将图一中第三步的链接嵌入页面使用,也可直接使用上图中搜索栏中的地址,
记得username或email必须数据库中具有,然后点击按钮即可
然后去邮箱中,邮件中有个链接,就是重置密码的链接
点击链接,进入页面
如果嫌弃页面和自己网站的风格不一致可在django-password-reset下的templates更改