2010-02-27 31 views
3

例如,在我的索引(請求):在我的web應用程序中爲302架構實現可以嗎?

def index(request): 
    if logged_in: 
     return HttpResponseRedirect("/home_profile") 
    else: 
     return HttpResponseRedirect("/login") 

這樣,當用戶點擊我的主頁......他適當重定向。這是一個很好的建築嗎?或者這會導致緩存問題,等等?

+0

這給出了一個簡短的討論返回代碼http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html – Joe 2010-02-27 11:08:56

+0

看到這個:http://stackoverflow.com/questions/2006397/when-a-url - 結果-IN-A-臨時重定向的HTTP-302是什麼,得到索引。看到這個:http://stackoverflow.com/questions/1393280/http-redirect-301-vs-302-temporary-vs-永久 – 2010-02-27 11:37:05

回答

3

重定向是可以的(302不應該導致任何緩存問題,因爲302是臨時的),但是爲什麼你需要在if和else中都有重定向。如果沒有登錄,更好的方法是重定向到登錄頁面,否則視圖應該返回響應,而不是不必要地重定向。

def home(request): 
    if not logged_in: 
     return HttpResponseRedirect("/login?next=%s"%reverse("home")) 

    return HttpResponse(...) 

你可以做同樣的事情,在用戶需要記錄在每個視圖,否則讓一個登錄裝飾,djago權威性已經爲l ogin_required或進行登錄的中間件,這將做它爲每個請求。

另請注意我登錄後傳遞下一個網址以訪問,因爲通常我想登陸我正在前往的地方。

相關問題