2012-04-27 102 views
1

另一個像這樣的問題被問到了,但我不喜歡這個答案(事實上它並沒有真正回答這個問題。第一個地方):Can any one explain how can i pass arg or kwargs from redirect to another view?我怎樣才能重定向到另一個應用程序中的視圖,並仍然傳遞參數(Django)

我有一個視圖,需要重定向到另一個視圖(在另一個應用程序),仍然發送一個參數。目前我有:

return redirect('/projects/', login_error=error) 

哪個不起作用(重定向發生,但參數不通過)。是否可以使用redirect()來做到這一點?文檔沒有任何內容。

不過,我也試過指視圖,而不使用網址:

return redirect('projects.views.list_all', login_error=error) 

但是,這並不工作。

回答

1

redirect返回一個HTTP重定向到提供的URL - 也就是說,瀏覽器收到一個 30x響應並啓動一個新的請求。

爲了保持狀態兩個請​​求,您可能需要設置會話變量(根據對方的回答),或提供查詢參數,如:

return redirect('/projects/?login_error=error') 

然後,您將需要處理傳入request.GET參數在另一個視圖中。

+0

我明白了,這樣做更有意義。然而,文檔確實說如果您引用視圖本身(而不是URL),則可以安全地傳遞參數(來源:https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/# django.shortcuts.redirect)。我如何參考當前應用程序之外的視圖? – n0pe 2012-04-27 00:52:57

+0

視圖名稱仍然用於獲取URL - kwargs是URL的正則表達式參數,而不是視圖的方法參數。 – Hamish 2012-04-27 00:58:50

+0

明白了,謝謝。畢竟,我想我正在使用會話變量。 – n0pe 2012-04-27 01:00:41

相關問題