2017-01-17 31 views
0

我正在寫應該是所有用戶重定向到一個特定的頁面,如果設置的是康斯坦特設置爲True一個簡單的自定義中間件:定製中間件不重定向

從django.shortcuts匯入Django的重定向 .conf文件導入設置

class DisableSiteMiddleware(object): 
    """If site is disabled, user is redirected to a simple page""" 
    print("Class") 

    def process_request(self, request): 
     print("func") 
     if settings.SITE_DISABLED == True: 
      return redirect("/site-disabled") 

在urls.py,但與任何URL

url(r'^site-disabled/', site_disabled) 

會發生什麼奇怪的是做的:在瀏覽器端它不會加載anyt並顯示瀏覽器失敗頁面。在控制檯上,我可以看到它反覆打印「func」,這意味着process_request被多次調用。我懷疑一個循環被瀏覽器殺死了。

可能是什麼問題?

回答

1

這裏沒有魔法。

它每次都重定向到/site-disabled。將條件放在上面。

+0

什麼樣的情況? –

+0

current is'settings.SITE_DISABLED == True'。在每一個請求中都是一樣的。所以做任何你想要的條件。 – itzMEonTV

+0

我添加了一個簡單的布爾has_redirected = False這是檢查並相應地改變。 –