2014-11-21 108 views
0

我有一個表格供用戶填寫在< home>/data。 但是,我希望用戶只有在他們同意某些條款(位於< home>/terms)時才能訪問該表單。Django - 只允許從特定頁面訪問url

有沒有一種方法可以確保訪問< home>/data的唯一方式是來自< home/terms的同意按鈕?即只需在地址欄輸入<首頁>/data到地址欄應該拋出錯誤或重定向到條款。

萬一它很重要,我不存儲用戶(我正在使用會話數據)。

謝謝!

回答

2

您可以使用referer標頭(request.META['HTTP_REFERER'])來確定用戶來自哪個頁面。您的視圖可以讀取此標題並拒絕訪問,如果它不存在/重定向回您的術語頁面。

爲了更可靠一點,如果您已經使用會話數據,則可以在用戶點擊條款頁面上的「同意」按鈕時在會話中存儲標誌。也許這樣做表單POST,你在會話中設置了一個他們同意的標誌,並且該視圖重定向到/ data頁面。

在/數據視圖上,如果在會話中未檢測到此標誌,則可以重定向回術語頁面。

+0

感謝您的建議!這正是我需要的。 – pomegranate 2014-11-22 21:16:27

+0

當調用第一個視圖時在其會話中設置一個標誌,然後在調用第二個(保護)視圖之後將其翻轉過來是完美的。 – gucciferXCIV 2017-10-20 20:00:35