2013-10-30 144 views
1

我是Django的新手,我現在試圖使用HttpResponseRedirect()函數。但我很困惑,如果我使用它像HttpResponseRedirect('good/'),並且當前頁面是'/bad/',它只能被重定向到'/bad/good/',這是一個當前頁面的URL,附加了HttpResponseRedirect()函數的url值。我試圖搜索谷歌,並找不到任何解決方案。Django重定向URL

如何重定向到具有特定網址的頁面?例如,HttpResponseRedirect('/good/')/good/而不是/bad/good/

回答

3

當然你必須看到'good/''/good/'之間有區別嗎?前者將始終添加到現有頁面上,而後者將從根目錄開始。這是基本的網絡行爲,與Django無關。

在任何情況下,您都不應該像這樣對網址進行硬編碼,但應該使用Django的URL-reversing functionality來動態計算網址。

+0

謝謝丹尼爾,那有效。感謝您對Revering功能的建議。我將嘗試使用Reverse()學習和修改我的代碼。 :) – noben

+1

我不會說這是*基本的網絡行爲*因爲追加到當前的URL不是任何HTTP規範(純粹依賴於瀏覽器)的一部分。因此應該不惜一切代價避免不以協議或'/'開始的路徑。 – freakish

-1

如果你想重定向到你的域名的網址,你可以使用redirect。您可以使用重定向進行查看,方法是使用urls.py文件中的模式或任何您喜歡的網址。儘管我強烈鼓勵使用視圖來表示他們網站上提供的不同教程。

更好地檢查出Django文檔是最完整的一個在那裏(我的愚見)對於缺乏透明度的確

/編輯。

+0

-1:這絕對不是真的。您可以重定向到任何**網址,甚至在您的網域之外(也嚴格來說,域內的每個網址都是由Django處理的,只是那些未定義的網址會導致404)。另外HTTP/1.0規範明確指出URL應該以**絕對**形式給出(HTTP/1.1允許相對)。此外,它不回答這個問題。 – freakish

+0

OP顯然希望重定向到他的域名,更好地按照文檔提出的那樣做。與反向的網址。 – mortaga

+0

這並不明顯。除此之外沒關係。你還是說了一些不是真的:即使沒有處理程序,你也可以重定向到任何URL。我並不是說文檔提出的是錯誤的。我是說你不說實話。 – freakish