web-dev-qa-db-ja.com

Django "ビューはHttpResponseオブジェクトを返しませんでした。"

フォームを保存しているところに簡単なビューがあります。コードは「クリーン」に見えますが、「ビューが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))  

ありがとう!

15
dana

コードのインデントを確認する

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 requestの場合は、バインドされていないフォームをレンダリングします

ポストリクエストで無効なフォームの場合、バインドされたフォームをレンダリングします

pOSTリクエストであり、有効なフォームの場合はページをリダイレクトします

26
Ashok

すべてのビュー関数は、ある種のHttpResponseオブジェクトを返す必要があります。関数には、代わりにNoneが返されるコードパスがあります。これは、request.method != 'POST'そしてあなたは単にあなたの関数の「終わりから落ちる」でしょう(それはNoneを返します)。

6
Brian Neal