0

我想知道如何将特定用户的访问权限限制在他们登录后只能访问一页。

我在我的用户模型中有

deactivated = models.BooleanField(default=False)

如果用户已登录并且他们的帐户已停用,我只想向他们显示停用页面。我不想让他们去网站上的任何其他地方,除非他们再次激活他们的帐户。实现它的最好和最简单的方法是什么?

编辑:我负担不起浏览我拥有的每一个视图并在其上附加一个装饰器。

4

3 回答 3

1

如果您不想使用装饰器方法,最好的办法是编写一个中间件来检查是否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/')
        # ...
于 2012-10-23T09:29:21.713 回答
0

您可以使用装饰器功能来检查用户是否被激活并重定向他。 如何在 django 中编写自定义装饰器?

于 2012-10-23T09:08:45.977 回答
0

使用视图装饰器。

关于它的好文章:http: //passingcuriosity.com/2009/writing-view-decorators-for-django/

于 2012-10-23T09:10:26.473 回答