2012-10-23 45 views
0

我想知道我如何限制特定用戶的訪問只有一個頁面一旦他們登錄。限制某些用戶只有一個頁面在Django

我有我的用戶模型

deactivated = models.BooleanField(default=False) 

如果用戶已登錄並且他們的帳戶已停用,我只想向他們顯示一個停用頁面。除非他們再次激活其帳戶,否則我不想讓他們去其他任何網站。 什麼是最好的,最簡單的方法來實現呢?

編輯:我承受不了每一個我有的視圖,並附加一個裝飾器。

回答

1

如果你不想使用裝飾的方法,最好的辦法是寫一個middleware如果request.user是否被激活,然後重定向(到一個頁面,來檢查他們可以在必要時優先重新激活他們的賬戶)。

粗略你會想是這樣的:

from django.shortcuts import redirect 


class DeactivatedRedirectMiddleware(object): 

    def process_request(self, request): 
     if request.user and not request.user.is_anonymous(): 
      if request.user.deactivated and request.get_full_path() != '/some/url/': 
       # redirect here 
       return redirect('/some/url/') 
     # ... 
+0

好吧,我覺得這個作品。但現在我處於重定向循環中。因爲即使去'/ some/url /'重定向我。 –

+0

@dado_eyad可以在重定向它之前檢查'request.path'是否是'/ some/url /'。 –

+0

剛剛做到了這一點,並編輯了你的代碼。謝謝。 –

相關問題