我想知道我如何限制特定用戶的訪問只有一個頁面一旦他們登錄。限制某些用戶只有一個頁面在Django
我有我的用戶模型
deactivated = models.BooleanField(default=False)
如果用戶已登錄並且他們的帳戶已停用,我只想向他們顯示一個停用頁面。除非他們再次激活其帳戶,否則我不想讓他們去其他任何網站。 什麼是最好的,最簡單的方法來實現呢?
編輯:我承受不了每一個我有的視圖,並附加一個裝飾器。
我想知道我如何限制特定用戶的訪問只有一個頁面一旦他們登錄。限制某些用戶只有一個頁面在Django
我有我的用戶模型
deactivated = models.BooleanField(default=False)
如果用戶已登錄並且他們的帳戶已停用,我只想向他們顯示一個停用頁面。除非他們再次激活其帳戶,否則我不想讓他們去其他任何網站。 什麼是最好的,最簡單的方法來實現呢?
編輯:我承受不了每一個我有的視圖,並附加一個裝飾器。
如果你不想使用裝飾的方法,最好的辦法是寫一個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/')
# ...
您可以使用修飾器功能來檢查用戶是否被激活並重定向他。 How to write a custom decorator in django?
我有很多的意見。我不想通過每個人,並附加一個裝飾器。 –
好吧,我覺得這個作品。但現在我處於重定向循環中。因爲即使去'/ some/url /'重定向我。 –
@dado_eyad可以在重定向它之前檢查'request.path'是否是'/ some/url /'。 –
剛剛做到了這一點,並編輯了你的代碼。謝謝。 –