欢迎光临
我们一直在努力

django用户管理系统怎么做,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里设置你的邮箱格式,我的如下:

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

59243236

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。