我已经在我的项目中安装了 Django-Registration-Redux 应用程序并设置了默认的一步注册后端,并且到目前为止它工作正常。现在我想通过添加密码更改机制来扩展我的应用程序的功能。我可以开始寻找的任何想法或链接。
提前致谢
PD:Django-registration-redux 文档与本主题无关。
我已经在我的项目中安装了 Django-Registration-Redux 应用程序并设置了默认的一步注册后端,并且到目前为止它工作正常。现在我想通过添加密码更改机制来扩展我的应用程序的功能。我可以开始寻找的任何想法或链接。
提前致谢
PD:Django-registration-redux 文档与本主题无关。
django-registration-redux
也支持密码更改功能。更改密码的 url 是http://your-port-number/accounts/password/change
. 在您的 localhost 中输入 后http://your-port-address/accounts/
,您将在屏幕上获得有关 url 映射的所有信息。使用这些 url 映射,您可以编写特定的 html 模板并直接在您的应用程序中使用它们。注册模板可以在这里找到
希望这会有所帮助。
您可以使用标准django.contrib.auth
模板标签并添加auth_
到标签的开头。以下是auth_urls.py
在 Django-Registration-Redux 中的设置方式:
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'),
]
Leif Azzopardi 和 David Maxwell所著的“Tango With Django”一书在第 11 章中包含了一个使用“Django-Registration-Redux app”的好例子。本章详细解释了安装/设置这个模块以及配置设置、视图和网址格式清晰简洁。
根据这本书,模块“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-url_patterns
urls.py
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 。我的存储库包含书中的工作示例。