视图返回None(未返回HttpResponse对象)

2024-04-24 23:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题可能看起来是重复的和/或太无聊了。我已经读过thisthisthisthis和{a5}问题和答案。但找不到适合我问题的解决方案。在

我是Django框架的新手。为了学习它,我想创建一个简单的博客。当用户单击注册按钮时(在填写必填字段后),将引发以下错误:

ValueError at /user/register/ The view user.views.register didn't return an HttpResponse object. It returned None instead.

视图.py

def register(request):
    """
    Registers new user. 
    """
    if request.POST:
        if request.method == 'POST':
            personal_info = UserFormModel(request.POST)
            if personal_info.is_valid():
                email = personal_info.cleaned_data['email']
                username = personal_info.cleaned_data['username']
                if User.objects.filter(email=email).exists():
                    return HttpResponse('email error')
                elif User.objects.filter(username=username).exists():
                    return HttpResponse('username error')
                else:
                    return HttpResponse('saved')
    else:
        personal_info = UserFormModel()
        return render_to_response('user/registration.html',
                            {
                                'title': 'Registration',
                                'username_error': 'Sorry, someone already has that username.',
                                'personal_info': personal_info,
                            }, 
                            context_instance=RequestContext(request))

如果需要,我可以分享任何文件内容。在

如有任何意见或建议,将不胜感激。在


Tags: inforegisterreturnifemailrequestusernameerror
1条回答
网友
1楼 · 发布于 2024-04-24 23:58:12

排队 if personal_info.is_valid():

如果个人信息无效,则返回None(不返回任何内容)

添加else条件,因为您不处理案例。在

if personal_info.is_valid():
    # code here
else:
    return HttpResponse('personal info provided not valid')

避免这种情况发生的一个更好的方法是在函数开始时初始化状态消息和结果的字典,只在一个位置返回而不是在多个位置返回,并将结果存储在result-dict中

result_dict = {'status': False}

总是在函数结束时返回

return HttpResponse(json.dumps(result_dict))

这样,在返回值时就不会错过一个case。在

所以最后的代码应该是

^{pr2}$

相关问题 更多 >