[Fixed]-Django "The view didn't return an HttpResponse object."


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)
            return HttpResponseRedirect('.') 
        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:

Leave a comment