轻松地将密码重置工作流添加到django项目中。
django-passreset的Python项目详细描述
此应用程序简化了向您的 地点。它利用Django的退出密码重置工作流,但 简化了向站点添加url的过程。这也允许你 使用命名空间为一个站点创建多个密码重置工作流。
安装
只需添加“passreset”到已安装的应用程序中,并包括passreset.url 在urlconf模块中:
fromdjango.conf.urlsimporturl,includeimportpassreseturlpatterns=[#...url(r'^profile/passreset/',include(passreset.urls))]
然后,您可以通过反转passreset:reset password来链接到密码重置窗体
<a href="{% url "passreset:reset-password" %}">Forgot password?</a>
在django内置密码的帮助下,应用程序可以处理其余的问题 重置工作流。注意,passreset.url是一个对象,而不是一个模块。使用 include('passreset.url')将引发重要错误。
<>快速添加密码重置功能到你现有的管理员,只包括 passreset.admin\u网址:fromdjango.conf.urls.defaultsimporturl,includeimportpassreseturlpatterns=[url(r'^admin/passreset/',include(passreset.admin_urls),url(r'^admin/',include(admin.site.urls)),)
为了方便起见,passreset应用程序会自动覆盖默认设置 添加“忘记密码”的管理站点登录模板。“链接。
命名空间
如果一个站点需要多个密码重置工作流,则必须使用 passreset.urls\ns()函数。请注意,不应使用命名空间 要包含的关键字参数:
importpassreseturpatterns=[url(r'^profile/reset-password',include(passreset.urls_ns('user-passreset',login_url='/profile/login'))),url(r'^staff/reset-password',include(passreset.urls_ns('staff-passreset',login_url='/staff/loging'))),]
如果未提供登录URL,则使用settings.login URL。你也可以通过 template_path参数指定应用程序中使用的模板的基路径 实例。
然后,您可以使用新的名称空间来反转任何passreset url:
<a href="{% url "staff-passreset:reset-password" %}">Forgot password?</a>
模板
默认模板窗体passreset all extend“passreset/base.html”,您可以 在项目中为此模板创建覆盖(例如, my_project/templates/passreset/base.html,并让它扩展站点的基础 模板。模板都使用名为passreset_content的块。所以,你们 需要做的是在网站的主要内容块中包含该块:
{% extends "mysite/base.html" %} {% block content %} {% block passreset_content %} {% endblock %} {% endblock %}
urls\u ns函数还接受一个tpl\u path参数,它允许您 重写passreset使用的任何模板。路径是模板 可能包含以下任何内容的目录:
- reset_password.html
- done.html
- confirm.html
- complete.html
- email.html
- subject.ttx
管理
passreset.admin\uURLurlconf基本上是 passreset.url(admin-passreset,login-url='admin:login')。如前所述 上面,passreset用“forgot”覆盖默认的管理员登录模板 密码?“link,基本上是这样的:
<ahref="{% url admin-passreset:reset-password }">Forgot password?</a>
您可以将管理员passreset url与另一个passreset实例一起使用 不使用命名空间:
urlpatterns+=patterns('',url(r'^admin/passreset/',include(passreset.admin_urls)),url(r'^admin/',include(admin.site.urls)),url(r'^profile/passreset',include('passreset.urls')),)