2013-02-11 52 views
0

假設我有一個將採取POST請求的視圖。驗證檢查合格後,我要請求到另一個HTML /視圖重定向用GET方法的請求:如何更改Post中的http請求以獲取Django?

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做這種事嗎?

+0

重定向不會是一個POST:http://stackoverflow.com/a/47735/396300 – 2013-02-11 11:03:50

+0

但我得到了這個序列: [11 /二月/ 2013 3點05分51秒] 「GET/core/login_retrieval/HTTP/1.1」200 2123 [11/Feb/2013 03:05:53]「POST/core/login/HTTP/1.1」200 2429 我使用了錯誤的重定向功能嗎? – 2013-02-11 11:07:26

+0

我認爲你需要用變量創建一個url – catherine 2013-02-11 11:08:20

回答

2

您可以使用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) 
0

的用戶代理(瀏覽器),如果它被用POST重定向或GET決定。如果重定向,大多數瀏覽器將從POST切換到GET。我知道你可以重定向並保留在POST中的唯一方法是,如果你明確地執行它,例如使用curl -X POST。

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