Python 视图未返回任何对象(未返回HttpResponse对象)

Python 视图未返回任何对象(未返回HttpResponse对象),python,django,Python,Django,这个问题可能是重复的和/或太无聊了。我已经阅读了、、和问答。但是找不到适合我问题的解决方案 我是Django框架的新手。为了学习它,我想创建一个简单的博客。当用户单击“注册”按钮(填写必填字段后)时,引发以下错误: ValueError位于/user/register/视图user.views.register没有 返回一个HttpResponse对象。它没有返回任何结果 视图.py def register(request): """ Registers new user.

这个问题可能是重复的和/或太无聊了。我已经阅读了、、和问答。但是找不到适合我问题的解决方案

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

ValueError位于/user/register/视图user.views.register没有 返回一个HttpResponse对象。它没有返回任何结果

视图.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))
如有必要,我可以共享任何文件内容

如有任何有用的意见或回答,我们将不胜感激。

请保持一致
如果个人信息有效():

如果个人信息无效,它将不返回任何信息。(不返回任何信息)

添加else条件,因为您没有处理案例

if personal_info.is_valid():
    # code here
else:
    return HttpResponse('personal info provided not valid')
为了避免出现这种情况,更好的方法之一是在函数开始时为状态消息和结果保留一个字典,只在一个地方返回,而不是在多个地方返回,并将结果存储在result_dict中

result_dict={'status':False}

并始终在函数结束时返回

返回HttpResponse(json.dumps(result\u dict))

这样,您将永远不会错过返回值的案例

所以最终的代码应该是这样的

def register(request):
    """
    Registers new user. 
    """
    result_dict = {'status': False}
    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():
                    result_dict['message'] = 'email error'
                elif User.objects.filter(username=username).exists():
                    result_dict['message'] = 'username error'
                else:
                    result_dict['message'] = 'saved'
                    result_dict['status'] = True
        else:
            result_dict['message'] = 'personal info provided not valid'
    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))

    return HttpResponse(json.dumps(result_dict))

个人信息时,视图会返回什么?
是否有效()不是真的?我忘记了:)谢谢:)会喜欢反馈和答案的问题以及否决票,对我也会有帮助:)@mirjallatalishinski欢迎您,您也可以将其标记为正确:)