要让用户在Django中更改自己的密码,您可以使用Django内置的视图和表单。以下是一个简单的步骤:
settings.py
文件中启用了django.contrib.auth
和django.contrib.contenttypes
应用程序。urls.py
文件中,包含Django的内置密码更改URL模式:from django.contrib.auth import views as auth_views
urlpatterns = [
# ...
path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
# ...
]
registration
的子目录,并在其中创建一个名为password_change_form.html
的文件。在该文件中,您可以自定义密码更改表单的呈现方式:{% extends 'base.html' %}
{% block content %}
<h2>Change password</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Change password</button>
</form>
{% endblock %}
views.py
文件中,您可以覆盖Django的默认PasswordChangeView
,以便自定义密码更改过程中的行为:from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.views import PasswordChangeView
from django.shortcuts import render
class MyPasswordChangeView(PasswordChangeView):
form_class = PasswordChangeForm
success_url = '/password_change/done/'
template_name = 'registration/password_change_form.html'
def form_valid(self, form):
form.save()
update_session_auth_hash(self.request, form.user)
return super().form_valid(form)
urls.py
文件中使用您的自定义视图替换默认的PasswordChangeView
:from . import views as my_views
urlpatterns = [
# ...
path('password_change/', my_views.MyPasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
# ...
]
现在,用户可以通过访问/password_change/
URL来更改他们的密码。这个过程可以使用Django的内置视图和表单轻松实现,无需引入第三方云计算服务。
领取专属 10元无门槛券
手把手带您无忧上云