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

时间:2014-12-11 03:12:59

标签: python django django-registration reset-password

我已经在我的项目中安装了Django-Registration-Redux应用程序,并设置了默认的一步注册后端,它到目前为止一直有效。现在我想通过添加密码更改机制来扩展我的应用程序的功能。我可以开始寻找任何想法或链接。

提前致谢

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

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:4)

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

答案 2 :(得分:0)

Leif Azzopardi和David Maxwell 这本书' Tango With Django' 包含一个使用' Django-Registration-Redux app& #39;第11章。本章详细介绍了安装/设置此模块以及配置设置,视图和设置的过程。网址图案清晰简洁。

根据这本书,模块' Django-Registration-Redux'不提供它公开的网址的模板。您需要手动创建这些模板 - ,因为这些模板往往是特定于应用程序的 (您应该在项目的模板目录中创建一个名为registration的目录来存储这些模板文件。)您还应该看到Anders Hofstee's Templates以获取一些提示来构建你自己的模板。我的如下(基于他的模板)

# <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(r'^accounts/', include('registration.backends.simple.urls')),

正如前面的答案所解释的,更改登录用户密码的网址是http://<projects_root_url>/accounts/password/change。 您应该通过更新菜单项将此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。 My repository包含本书中的工作示例。

答案 3 :(得分: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'),
]