Django anth 修改密码
时间: 2023-06-10 17:06:16 浏览: 59
用户在 Django 中修改密码的流程如下:
1. 用户登录到应用程序中,并在相应的表单中输入旧密码和新密码。
2. 应用程序验证旧密码是否正确,如果正确,则将新密码保存在数据库中。
3. 如果旧密码不正确,则向用户显示错误消息。
下面是一个简单的 Django 视图函数,它处理用户修改密码的请求:
```python
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib import messages
from django.shortcuts import render, redirect
@login_required
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
messages.success(request, 'Your password was successfully updated!')
update_session_auth_hash(request, user) # Important!
return redirect('home')
else:
messages.error(request, 'Please correct the error below.')
else:
form = PasswordChangeForm(request.user)
return render(request, 'change_password.html', {'form': form})
```
此视图函数使用 Django 的内置 `PasswordChangeForm` 表单来处理用户输入的数据。如果表单验证成功,则将新密码保存到数据库中,并向用户显示成功消息。如果表单验证失败,则向用户显示错误消息。
同时,由于我们使用了 `@login_required` 装饰器,该视图函数只能被已登录的用户访问。如果用户未登录,则会被重定向到登录页面。