【问题标题】:Separate access levels for different apps in DjangoDjango中不同应用程序的单独访问级别
【发布时间】:2017-03-25 12:09:20
【问题描述】:

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

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

【问题讨论】:

    标签: django authentication


    【解决方案1】:

    我的看法

    settings.py

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

    models.py

    ​​>

    第一个应用程序

    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)
    

    然后所有视图都继承自它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多