Django密码修改和重置视图
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
@login_required
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(data=request.POST, user=request.user)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user) # 更新session认证哈希
return redirect('password_reset_done')
else:
form = PasswordChangeForm(user=request.user)
return render(request, 'registration/change_password.html', {'form': form})
# 假设有一个密码重置完成的模板 'password_reset_done.html'
这段代码实现了用户密码修改的功能,首先检查请求方法是否为POST,如果是则实例化PasswordChangeForm,并将当前用户传入。如果表单有效,则保存更改并更新session认证哈希。如果请求方法不是POST或表单不是有效的,则渲染一个新的PasswordChangeForm供用户填写。
评论已关闭