📅  最后修改于: 2023-12-03 15:00:27.184000             🧑  作者: Mango
在Django应用程序中,用户经常需要更改其密码。在本文中,我们将介绍如何在Django中完成密码更改。
首先,我们需要创建一个视图,该视图针对经过身份验证的用户提供表单以更改其密码。 您可以在您的app中的views.py文件中创建此视图。
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
from django.shortcuts import render, redirect
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user)
return redirect('change_password_done')
else:
form = PasswordChangeForm(request.user)
return render(request, 'change_password.html', {'form':form})
此视图将具有将form渲染到模板的能力。 可以在模板文件中创建表单。视图示例中使用的模板名为“change_password.html”。
我们将使用Django的模板系统来创建我们的模板。 在此示例中,我们将创建一个简单的模板,其中包含密码更改表单。
{% extends 'base.html' %}
{% block page_content %}
<h2>更改密码</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">更改密码</button>
</form>
{% endblock %}
请注意,我们在表单中使用了{% csrf_token %},以确保表单提交是安全的。
我们需要将我们的密码更改视图添加到应用程序的URL配置中。 在您的app的urls.py文件中添加以下行:
from .views import change_password
urlpatterns = [
# ... 其他视图 ...
path('change-password/', change_password, name='change_password'),
]
现在,可以通过访问“http://example.com/change-password/”来访问我们的密码更改表单。
最后,我们还需要一个次要更改密码完成视图,当用户成功更改其密码时,将在其中呈现。 您可以在您的app中的views.py文件中创建此视图。
from django.shortcuts import render
def change_password_done(request):
return render(request, 'change_password_done.html')
此简单的视图将呈现模板“change_password_done.html”。
与更改密码视图一样,我们需要为次要更改密码完成视图创建模板。
{% extends 'base.html' %}
{% block page_content %}
<h2>密码已更改</h2>
{% endblock %}
现在,您的用户可以访问“http://example.com/change-password/”来更改其密码。 当他们成功更改密码时,将呈现“密码已更改”消息。
希望本文能够帮助您更好地了解如何在Django中更改密码。