Django “The view didn't return an HttpResponse object.”

前端 未结 3 1617
臣服心动
臣服心动 2020-12-15 08:15

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 HttpRespo

相关标签:
3条回答
  • 2020-12-15 08:36

    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 讨论(0)
  • 2020-12-15 08:41

    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

    0 讨论(0)
  • 2020-12-15 08:41

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

    0 讨论(0)
提交回复
热议问题