密码重置功能 Django-Registration-Redux 应用程序

问题描述 投票:0回答:4

我已经在我的项目中安装了 Django-Registration-Redux 应用程序,并设置了默认的一步注册后端,到目前为止它一直有效。现在我想通过添加密码更改机制来扩展我的应用程序的功能。我该怎么做?

PD:Django-registration-redux 文档与此主题无关。

python django django-registration reset-password
4个回答

4
投票

django-registration-redux
也支持密码更改功能。更改密码的网址为
http://your-port-number/accounts/password/change
。在本地主机中输入
http://your-port-address/accounts/
后,您将在屏幕上获得有关 url 映射的所有信息。使用这些 url 映射,您可以编写特定的 html 模板并直接在您的应用程序中使用它们。注册模板可以在这里找到 希望这有帮助。


0
投票

Leif Azzopardi 和 David Maxwell 的书 'Tango With Django' 在第 11 章中包含一个使用 'Django-Registration-Redux 应用程序' 的很好的示例。本章详细解释了 - 安装/设置此模块的过程以及以清晰简洁的方式配置设置、视图和 URL 模式。 根据该书,模块“Django-Registration-Redux”不为其公开的 URL 提供模板。您需要手动创建这些模板 -

因为这些模板往往是特定于应用程序的(您应该在项目的模板目录中创建一个名为 registration 的目录来存储这些模板文件。)

 您还应该查看 
Anders Hofstee 的模板 以获取一些构建您自己的模板的提示。我的如下(基于他的模板) # <my_django_project_directory>/templates/accounts/password_change_form.html {% extends "<my_app_name>/base.html" %} {% block body_block %} <h1>Change your password</h1> <form method="post" action="."> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit" /> </form> {% endblock %}

假设您已在项目的 
settings.py

中配置了模块,则应在项目的

url_patterns
文件中找到的
urls.py
列表中包含以下 url -

url(r'^accounts/', include('registration.backends.simple.urls')),

正如前面的答案所解释的,更改登录用户密码的 URL 是 
http://<projects_root_url>/accounts/password/change

。 您应该将此 URL 提供给登录用户,以便通过更新菜单项进行访问。继续本书的示例,我更新了基本模板以公开密码更改 url。考虑以下代码:


# <my_django_project_directory>/templates/<my_app_name>/base.html {% if user.is_authenticated %} <li><a href="{% url 'auth_logout' %}?next=/rango/">Logout</a></li> <li><a href="/accounts/password/change/">Change Password</a></li> {% else %} <li><a href="{% url 'auth_login' %}">Login</a></li> <li><a href="{% url 'registration_register' %}">Sign Up</a></li> {% endif %}

我希望这有帮助!如果没有,那么我强烈建议您阅读上面提到的书!简单的示例,简单易懂的说明,最重要的是,该示例无需在任何配置中投入太多精力即可运行。

注意:书中示例基于 django 1.9 版本。我的操作系统是 Ubuntu 16.04 和 python 版本 - 3.5.2 。
我的存储库

包含书中的工作示例。


0
投票
django.contrib.auth

模板标签并将

auth_
添加到标签的开头。以下是 Django-Registration-Redux 中
auth_urls.py
的设置方式:

from django.conf.urls import url from django.contrib.auth import views as auth_views from django.urls import reverse_lazy urlpatterns = [ url(r'^login/$', auth_views.LoginView.as_view( template_name='registration/login.html'), name='auth_login'), url(r'^logout/$', auth_views.LogoutView.as_view( template_name='registration/logout.html'), name='auth_logout'), url(r'^password/change/$', auth_views.PasswordChangeView.as_view( success_url=reverse_lazy('auth_password_change_done')), name='auth_password_change'), url(r'^password/change/done/$', auth_views.PasswordChangeDoneView.as_view(), name='auth_password_change_done'), url(r'^password/reset/$', auth_views.PasswordResetView.as_view( success_url=reverse_lazy('auth_password_reset_done')), name='auth_password_reset'), url(r'^password/reset/complete/$', auth_views.PasswordResetCompleteView.as_view(), name='auth_password_reset_complete'), url(r'^password/reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='auth_password_reset_done'), url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', auth_views.PasswordResetConfirmView.as_view( success_url=reverse_lazy('auth_password_reset_complete')), name='auth_password_reset_confirm'), ]

© www.soinside.com 2019 - 2024. All rights reserved.