📜  Django 更改密码 - Python (1)

📅  最后修改于: 2023-12-03 15:00:27.184000             🧑  作者: Mango

Django 更改密码 - Python

在Django应用程序中,用户经常需要更改其密码。在本文中,我们将介绍如何在Django中完成密码更改。

1. 创建密码更改视图

首先,我们需要创建一个视图,该视图针对经过身份验证的用户提供表单以更改其密码。 您可以在您的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”。

2. 创建模板

我们将使用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 %},以确保表单提交是安全的。

3. 添加URL

我们需要将我们的密码更改视图添加到应用程序的URL配置中。 在您的app的urls.py文件中添加以下行:

from .views import change_password

urlpatterns = [
    # ... 其他视图 ...
    path('change-password/', change_password, name='change_password'),
]

现在,可以通过访问“http://example.com/change-password/”来访问我们的密码更改表单。

4. 次要更改密码完成视图

最后,我们还需要一个次要更改密码完成视图,当用户成功更改其密码时,将在其中呈现。 您可以在您的app中的views.py文件中创建此视图。

from django.shortcuts import render

def change_password_done(request):
    return render(request, 'change_password_done.html')

此简单的视图将呈现模板“change_password_done.html”。

5. 创建次要更改密码完成模板

与更改密码视图一样,我们需要为次要更改密码完成视图创建模板。

{% extends 'base.html' %}

{% block page_content %}
    <h2>密码已更改</h2>
{% endblock %}
结论

现在,您的用户可以访问“http://example.com/change-password/”来更改其密码。 当他们成功更改密码时,将呈现“密码已更改”消息。

希望本文能够帮助您更好地了解如何在Django中更改密码。