【问题标题】:ValueError at /change-password/ The view authapp.views.ChangePassword didn't return an HttpResponse object. It returned None instead/change-password/ 处的 ValueError 视图 authapp.views.ChangePassword 未返回 HttpResponse 对象。它返回 None 而不是
【发布时间】:2020-08-17 06:12:45
【问题描述】:

我制作的以下函数说明了以下内容 - /change-password/ 处的 ValueError 视图 authapp.views.ChangePassword 没有返回 HttpResponse 对象。它返回 None 。 请帮助 TIA。

def ChangePassword(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user=request.user)
        if form.is_valid():
            form.save()
            return redirect('profile')
    else:
        current_user = request.user
        form = PasswordChangeForm(user=current_user)
        pwform = {'form': form, 'user': current_user}
        return render(request, 'authapp/changepw.html', pwform)

【问题讨论】:

    标签: python django django-forms python-requests valueerror


    【解决方案1】:

    您不呈现响应,您制作表单等,但您应该返回 HTTP 响应,例如 render

    from django.shortcuts import render
    
    def ChangePassword(request):
        if request.method == 'POST':
            form = PasswordChangeForm(data=request.POST, user=request.user)
            if form.is_valid():
                form.save()
                return redirect('profile')
    
        else:
            current_user = request.user
            form = PasswordChangeForm(user=current_user)
        # not in the else block
        return render(request, 'some_template.html', {'form': form})

    render 调用应该else 子句中执行。由于您可能发出 POST 请求,但 form 无效。如果在 else 块中渲染它,那么对于无效的表单,它不会渲染响应。

    【讨论】:

    • 我重新编辑了帖子,请检查一下,因为我已经在渲染但仍然出现同样的错误!
    • @LinuJose: 你需要在else 下渲染它,而不是in else 部分,因为现在如果form 无效,它将在问题的代码中返回None
    猜你喜欢
    • 2020-11-01
    • 2019-06-12
    • 2018-06-02
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多