开发者

Django "The view didn't return an HttpResponse object."

开发者 https://www.devze.com 2023-01-04 09:16 出处:网络
I have a simple view in which I\'m saving a form. The code seems \'clean\', but I can\'t get rid of the err开发者_如何学Cor:

I have a simple view in which I'm saving a form. The code seems 'clean', but I can't get rid of the err开发者_如何学Cor:

"The view didn't return an HttpResponse object."

Though I've searched on the web, I did not find a relevant indication.

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))


verify the indentation of your code

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))

if it is get request, render a unbound form

if it is post request and invalid form render a bound form

if it is post request and valid form redirect the page


All view functions must return some kind of HttpResponse object. There exists a code path in your function where None will be returned instead. This will occur when request.method != 'POST' and you'll simply "fall off the end" of your function (which will return None).


If you are using the Django Rest framework. Use the below code to return the HTTP response to resolve this issue.

from django.http import HttpResponse

def TestAPI(request):
    # some logic
    return HttpResponse('Hello')

JSON Response return example:

def TestAPI(request):
    your_json = [{'key1': value, 'key2': value}]
    return HttpResponse(your_json, 'application/json')

For more details about HttpResponse: https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.HttpResponse

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号