我不知道是否有可能,但是我想使用中間件在URL的末尾添加一些參數。完成請求的URL後可以不重定向嗎?在Django中間件中修改地址
即。 用戶點擊:.../some_link 和中間件其重寫爲:??/ some_link PAR1 = 1個& PAR2 = 2
另一種方法是修改作出反應並更換所有的HTML鏈接,但它不是我我喜歡做。
感謝
我不知道是否有可能,但是我想使用中間件在URL的末尾添加一些參數。完成請求的URL後可以不重定向嗎?在Django中間件中修改地址
即。 用戶點擊:.../some_link 和中間件其重寫爲:??/ some_link PAR1 = 1個& PAR2 = 2
另一種方法是修改作出反應並更換所有的HTML鏈接,但它不是我我喜歡做。
感謝
我認爲這真的取決於你的問題以及你究竟在做什麼。
如果不重定向用戶,則無法更改URL,因爲您無法在沒有重新加載的情況下修改頁面上的URL。基本上重定向是一個迴應,告訴用戶繼續前進,沒有辦法改變URL。請注意,即使你用JavaScript這樣的東西來做,你基本上和重定向一樣,所以它不能在客戶端或服務器端完成。
我認爲這可能有幫助,如果你向我們解釋爲什麼你需要通過URL傳遞這些信息。爲什麼不在會話中存儲數據?
我想你可以將數據添加到請求對象,但不會將其添加到URL。
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
什麼是你想實現的目標以及爲什麼這樣?
你可以在中間件中做任何你喜歡的事情。您可以訪問請求對象,如果需要,您可以獲取URL並重定向到新的URL。
我的問題是,你爲什麼要這樣做?如果您需要保留有關請求的信息,那麼適當的位置在會話中。
謝謝,終於這對我來說很清楚。 – yezooz 2009-09-22 20:30:59