2

POSTリクエストを受け取るビューがあるとします。検証チェックに合格した後、GETメソッドを使用したリクエストを使用してリクエストを別のHTML/ビューにリダイレクトする必要があります。

def view1(request):
    if request.POST:
       form = TempForm(request.POST)
       if form.is_valid():
           return redirect(request, 'view2')

def view2(request):
    if request.POST:
       #POST stuff here
    else:
       #GET stuff here

私の問題は、の後にform.is_valid()リダイレクトリクエストがPOSTメソッドとして渡されることです。私の最終的な目標は、GETメソッドを使用してview2をリダイレクトすることです。

Djangoでそのようなことをすることはできますか?

4

2 に答える 2

3

HttpResponseRedirectクラスを使用して、任意の URL にリダイレクトできます。これはリダイレクトであるため、リクエストは GET リクエストになります (POST は http リダイレクトでは不可能です - これは http プロトコルの制限です)。

GET パラメータを追加する必要がある場合は、GET 文字列を自分で作成するだけです。

get_string = "?"
get_strint += "my_param=" + my_variable + "&"
get_string += "my_other_param=" + my_other_variable
return HttpResponseRedirect('/my_url/' + get_string)
于 2013-02-11T12:21:07.003 に答える
0

ユーザー エージェント (ブラウザー) は、POST または GET でリダイレクトされるかどうかを決定します。ほとんどのブラウザは、リダイレクトされると POST から GET に切り替わります。リダイレクトされて POST にとどまる唯一の方法は、curl -X POST などを使用して明示的に行うことです。

http://en.wikipedia.org/wiki/Post/Redirect/Get

于 2013-11-14T23:50:33.723 に答える