将一些用户限制为只在Django中的一个页面

时间:2012-10-23 09:05:48

标签: django django-authentication

我想知道如何在登录后将特定用户的访问限制为仅限一个页面。

我的用户模型

deactivated = models.BooleanField(default=False)

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

编辑:我无法负担浏览我的每个视图并附上装饰器。

3 个答案:

答案 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/