2

Djangoフォームを使用しました。私はこの機能を持っていますviews.py:

def func(request):
    if request.method == "POST":
        form = MyForm(request.POST)
        if form.is_valid():
            //do processing            
            return HttpResponseRedirect('/')
    else:
        form = MyForm()
        return render_to_response("checkbox.html", RequestContext(request, {'form':form}))

しかし、フォームが無効な場合、エラーがThe view didn't return an HttpResponse object.表示されます。ビュー関数がこのようになっているすべての場所を検索して認識しましたが、なぜ私のエラーがあるのか​​ わかりません。フォームが無効な間、何をすべきかわからないようです!!! ページが表示されず、ユーザーにフォームエラーが表示されないのはなぜですか? 手伝ってくれませんか?

4

2 に答える 2

4

フォームが無効な場合else、ifステートメントの一部はisの場合にのみ評価されるため、ビューは返されますrequest.method == "POST"False、そうではありません。

これを修正するために、フォームビューを作成するための通常のパターンは次のとおりです。

def func(request):
    if request.method == "POST":
        form = MyForm(request.POST)
        if form.is_valid():
            //do processing            
            return HttpResponseRedirect('/')
    else:
        form = MyForm()

    # outside of the else clause
    # if the form is invalid, then it will also show the error messages to the user
    return render_to_response("checkbox.html", RequestContext(request, {'form':form}))
于 2012-10-26T17:22:26.117 に答える
3

@miki725 の投稿に既に回答があります。GETそれらを回避するためのデフォルトの動作として考慮したいかもしれない単なる提案if .. else

def func(request):
    # GET is the default behaviour
    form = MyForm()

    if request.method == "POST":
        form = MyForm(request.POST)
        if form.is_valid():
            //do processing            
            return HttpResponseRedirect('/')

    return render_to_response("checkbox.html", RequestContext(request, {'form':form}))
于 2012-10-26T17:26:22.853 に答える