“Django”;视图没有';t返回HttpResponse对象。”;

“Django”;视图没有';t返回HttpResponse对象。”;,django,http,view,response,Django,Http,View,Response,我有一个保存表单的简单视图。代码看起来“干净”,但我无法消除错误: “视图未返回HttpResponse对象。” 虽然我在网上搜索过,但没有找到相关的迹象 def classroom_privacy(request,classname): theclass = Classroom.objects.get(classname=classname) if request.method == 'POST': form = PrivacyClass(requ

我有一个保存表单的简单视图。代码看起来“干净”,但我无法消除错误:

“视图未返回HttpResponse对象。”

虽然我在网上搜索过,但没有找到相关的迹象

def classroom_privacy(request,classname):
         theclass = Classroom.objects.get(classname=classname)
     if request.method == 'POST':  
       form = PrivacyClass(request.POST)
       if form.is_valid():
           new_obj = form.save(commit=False)
           new_obj.save()
           return HttpResponseRedirect('.')    
       else:
           form = PrivacyClass()     
       return render_to_response('classroom/classroom_privacy.html', {'form': form}, 
          context_instance=RequestContext(request))

所有视图函数都必须返回某种类型的HttpResponse对象。函数中存在一个代码路径,其中将返回
None
。当
request.method!='发布'
,您只需“从函数的末尾掉下来”(返回
None
)。

验证代码的缩进

def classroom_privacy(request, classname):
    theclass = Classroom.objects.get(classname=classname)
    if request.method == 'POST':
        form = PrivacyClass(request.POST)
        if form.is_valid():
            new_obj = form.save(commit=False)
            new_obj.save()
            return HttpResponseRedirect('.') 
    else:
        form = PrivacyClass()  

    return render_to_response('classroom/classroom_privacy.html', {'form': form}, context_instance=RequestContext(request))
如果是get请求,则呈现未绑定表单

如果是post请求且表单无效,则呈现绑定表单


如果是post请求和有效表单,则在使用Django Rest框架时重定向页面。使用以下代码返回HTTP响应,以解决此问题

from django.http import HttpResponse

def TestAPI(request):
    # some logic
    return HttpResponse('Hello')
JSON响应返回示例:

def TestAPI(request):
    your_json = [{'key1': value, 'key2': value}]
    return HttpResponse(your_json, 'application/json')
有关HttpResponse的更多详细信息:

一个小问题:你发送了一个POST请求?对过路人说:“你忘了
返回答复了吗?”你是对的。我真的有问题!非常感谢。这是正确的,突然之间验证开始工作了。不知怎么的,我的表单中出现了相同的缩进错误。谢谢!对你是对的。我的问题更为琐碎,尽管我看不见。我有一个缩进问题,“else”被解释为第二个if。非常感谢您的关注!:)