Ошибка Django cannot change password не вернула объект HttpResponse. Вместо этого он вернул None
Я создаю форму для изменения пароля следующим образом.
forms.py
class PasswordChangeForm(forms.Form):
password = forms.CharField(max_length=32,required=True,widget=forms.PasswordInput)
repassword = forms.CharField(max_length=32,required=True,widget=forms.PasswordInput,label="Password Confirmation")
def clean(self):
cleaned_data = super(PasswordChangeForm, self).clean()
password = cleaned_data.get("password")
repassword = cleaned_data.get("repassword")
if password != repassword:
raise forms.ValidationError(
"Password and Confirm Password does not match"
)
В файле views.py я сохраняю новый пароль следующим образом views.py
def changePassword(request):
username = None
if request.user.is_authenticated:
if request.method == 'POST':
form = PasswordChangeForm(request.POST)
if form.is_valid():
username = request.user.username
user = User.objects.get(username=username)
password = form.cleaned_data.get('password')
user.set_password(password)
user.save()
messages.success(request, "Your password has been changed successfuly.!")
return redirect('/changePassword')
else:
print(form.errors.as_data())
else:
form=PasswordChangeForm()
return render(request,'changepassword_form.html',{'form':form})
Выдает ошибку следующего вида.
ValueError at /changePassword
The view device.views.changePassword didn't return an HttpResponse object. It returned None instead.
После появления ошибки пароль был изменен. Происходит автоматический выход из системы, и я могу войти в систему с новым паролем, но он не перенаправляет на форму. Как исправить эту ошибку?
Возможно, что после смены пароля пользователь больше не аутентифицирован, добавьте @login_required вместо проверки аутентификации пользователя.
from django.contrib.auth.decorators import login_required
@login_required
def changePassword(request):
if request.method == 'POST':
...