Python view.py中的Django PasswordChangeForm不工作
我试图使用Django实现更改密码功能,但它不起作用。似乎它总是呈现一个新表单,而不进入form\u有效语句,也不提供任何错误信息 这是我在my views.py中的代码Python view.py中的Django PasswordChangeForm不工作,python,django,Python,Django,我试图使用Django实现更改密码功能,但它不起作用。似乎它总是呈现一个新表单,而不进入form\u有效语句,也不提供任何错误信息 这是我在my views.py中的代码 def password_reset_by_user(request): if request.method == 'POST': form = PasswordChangeForm(user=request.user, data=request.POST) if form.is_val
def password_reset_by_user(request):
if request.method == 'POST':
form = PasswordChangeForm(user=request.user, data=request.POST)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
return render(request, 'check_success.html')
else:
form = PasswordChangeForm(user=request.user)
context = {'form': form, }
return render(request, 'user/reset_by_user.html', context)
我想知道我做错了什么,请帮帮我。谢谢您需要确保在更改密码后重定向,并且在调用视图之前存在有效的用户会话 请尝试以下版本:
from django.contrib.shortcuts import redirect
from django.contrib.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
@login_required
def password_reset_by_user(request):
form = PasswordChangeForm(user=request.user data=request.POST or None)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
return redirect('/')
return render(request, 'users/reset_by_user.html', {'form': form})
您也可以使用内置模板,只需传递自定义模板:
from django.contrib.auth.views import PasswordChangeView
class PasswordResetByUser(PasswordChangeView):
template_name = 'users/reset_by_user.html'
success_url = '/'
我从django.contrib.auth.forms导入了当表单的输入值无效时您没有处理的PasswordChangeForm。如果form.is_valid()需要一个else条件。您好,我尝试了您的版本,但仍然遇到相同的问题。该进程从未保存新密码或重定向,只是继续呈现重置页面。