您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

django用户管理系统怎么做,django用户权限管理

来源:互联网 浏览:94次 时间:2023-04-08

????? ? 重置密码基本上是网站的标配,在这里同样介绍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