简体   繁体   English

Django-未返回HTTPResponse对象

[英]Django - didn't return an HTTPResponse Object

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. 我在Django中看到了有关HttpResponse对象这个主题的许多答案,但是我无法解决它。

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. 在显示这些错误之后:“视图”未返回HttpResponse对象。 It returned None instead. 它返回None。 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 :) 如果您有什么想法,我很开放:)

You are missing a return in your if statement. 您在if语句中缺少返回值。

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 我假设sendResetPasswordMail也返回HttpResponse

Hope this helps 希望这可以帮助

It is happening because your view doesn't return a response for a POST request. 发生这种情况是因为您的视图未返回POST请求的响应。 You should add something like redirect page when the email is successfully sent, something like this: 成功发送电子邮件后,您应该添加redirect页面之类的内容,例如:

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/')
     ......

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM