Django中不同应用程序的独立访问级别

时间:2017-03-25 12:09:20

标签: django authentication

我的Django项目中有4个应用程序。我想为每个人创建一个登录。但是注册app1的用户不应该能够访问app2的页面。如果我只让django admin给这个用户访问app1模型,他就无法影响app2模型,但是他仍然可以查看在app2中创建的页面吗?

如果此类用户尝试登录app2,我只想显示权限被拒绝的消息。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我的意见

settings.py

USER_TYPES = [
          (1,'first'), 
         (2, 'second')]

models.py

frist app

class User_First(models.Model):
    type = models.PositiveIntegerField(choices=settings.USER_TYPES)

第二个应用

class User_Second(models.Model):
    type = models.PositiveIntegerField(choices=settings.USER_TYPES)

Views.py

如果您在应用中使用CBV

first_app

class BaseView(Views):
    def dispatch(self, request, *args, **kwargs):
        if not request.user.type == 2:
            redirect(views of second app)
        else:
            super(BaseView, self).dispatch(request=request,*args,**kwargs)

second_app

class BaseView(Views):
    def dispatch(self, request, *args, **kwargs):
        if not request.user.type == 1:
            redirect(views of second app)
        else:
            super(BaseView, self).dispatch(request=request,*args,**kwargs)

然后所有视图都从它继承