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

41,811

Solution 1

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

Solution 2

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

Share:
41,811
dana
Author by

dana

Updated on December 02, 2020

Comments

  • dana
    dana over 3 years

    I have a simple view in which I'm saving a form. The code seems 'clean', but I can't get rid of the error:

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