我想知道如何在登录后将特定用户的访问限制为仅限一个页面。
我的用户模型
deactivated = models.BooleanField(default=False)
如果用户已登录且其帐户已停用,我只想向他们显示停用页面。我不想让他们去网站上的任何其他地方,除非他们再次激活他们的帐户。 实现它的最佳和最简单的方法是什么?
编辑:我无法负担浏览我的每个视图并附上装饰器。
答案 0 :(得分: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/')
# ...
答案 1 :(得分:0)
您可以使用装饰器功能检查用户是否已激活并重定向他。 How to write a custom decorator in django?
答案 2 :(得分:0)
使用视图装饰器。
关于它的好文章:http://passingcuriosity.com/2009/writing-view-decorators-for-django/