Reputation:
Sorry if my english is bad, but if you need question, i'm here :)
I saw many answers about this subject of HttpResponse object in Django, but i can't resolve it.
Normally the user insert his email address in order to recieve an email for his new password.
def forgottenPwdEmail(request):
if request.method == 'POST':
form = PasswordResetRequestForm(request.POST)
user = User.objects.get(username=request.user.username)
user.confirmed = True
user.save()
sendResetPasswordMail(user, request.META['HTTP_HOST'])
else:
form = PasswordResetRequestForm()
return render(request, 'front/reset_password_form.html', {'form': form})
After these error is displayed : "View" didn't return an HttpResponse object. It returned None instead. I can recieve the mail anyway, so the problem is in this function but i can't resolve it.
If you have some ideas, i am open :)
Upvotes: 0
Views: 532
Reputation: 369
You are missing a return in your if statement.
def forgottenPwdEmail(request):
if request.method == 'POST':
form = PasswordResetRequestForm(request.POST)
user = User.objects.get(username=request.user.username)
user.confirmed = True
user.save()
return sendResetPasswordMail(user, request.META['HTTP_HOST'])
else:
form = PasswordResetRequestForm()
return render(request, 'front/reset_password_form.html', {'form': form})
I am assuming that the sendResetPasswordMail is also returning a HttpResponse
Hope this helps
Upvotes: 2
Reputation: 8250
It is happening because your view doesn't return a response for a POST request.
You should add something like redirect
page when the email is successfully sent, something like this:
def forgottenPwdEmail(request):
if request.method == 'POST':
form = PasswordResetRequestForm(request.POST)
user = User.objects.get(username=request.user.username)
user.confirmed = True
user.save()
sendResetPasswordMail(user, request.META['HTTP_HOST'])
return redirect('/password-reset-email-sent/')
......
Upvotes: 1