2012-10-06 51 views
46

可能重複:
Django: Redirect to previous page after login重定向/返回到Django中的相同(前一個)頁面?

有什麼選擇,當你想向用戶返回Django的同一頁,什麼是各自的優點/缺點?

方法我知道:含

  • HTTP_REFERER
  • GET參數前面的URL
  • 會話數據存儲先前的URL

是否還有其他?

+8

鏈接 「登錄後」 說。我有沒有問過「登錄後」?這個問題可以真實地概述這個問題。它不值得-1,它值得+1。 Jeeez –

+2

相反,邏輯與get或post沒有什麼不同,它只是一個重定向問題,除非定義一些推理,否則沒有pro和con的參與,你的問題是廣泛的,沒有適當的研究或試驗。 –

+3

這是非常不同的。 Django登錄和註釋重定向是內置的。我的問題是針對其他情況;) –

回答

83

其中一個方法是使用HTTP_REFERER頭象如下:

from django.http import HttpResponseRedirect 

def someview(request): 
    ... 
    return HttpResponseRedirect(request.META.get('HTTP_REFERER')) 

不知道這個缺點的!

+7

我認爲,大多數用戶/瀏覽器都會關閉http_referer。 –

+3

你知道關閉標題有多困難嗎?大多數用戶不知道它是什麼,更不用說如何關閉它。在Firefox和Chrome中,你必須_手動修改preferences_(再次,並不是很多人知道如何去做);在IE中你根本無法禁用它(它對安全站點自動禁用)。 –

+35

我認爲,如果request.META沒有設置,重定向到網站的主頁將會更好:return HttpResponseRedirect(request.META.get('HTTP_REFERER','/')) – nickzam

4

雖然問題和答案很舊,但我認爲它缺少幾個選項。我沒有發現任何方法的缺點,我很樂意知道是否有任何方法?