Django站点框架权限

Django站点框架权限,django,django-admin,django-authentication,django-permissions,Django,Django Admin,Django Authentication,Django Permissions,我正在使用sites框架从一个代码库运行多个应用程序。我有3个用户和3个站点。他们可以登录到django管理界面并创建内容,但我希望他们只看到允许他们管理的站点,而不是其他站点。站点框架可以处理这个问题吗?如果没有,有谁能指导我如何实现这一目标 编辑: 我所做的只是一个简单的例子。这是 class Weblog(models.Model): title = models.CharField(max_length=250) slug = models.SlugField(uniqu

我正在使用sites框架从一个代码库运行多个应用程序。我有3个用户和3个站点。他们可以登录到django管理界面并创建内容,但我希望他们只看到允许他们管理的站点,而不是其他站点。站点框架可以处理这个问题吗?如果没有,有谁能指导我如何实现这一目标

编辑:

我所做的只是一个简单的例子。这是

class Weblog(models.Model):
    title = models.CharField(max_length=250)
    slug = models.SlugField(unique=True)
    user = models.ForeignKey(User) # this is the user who should own that blog and see nothing else
    site = models.ForeignKey(Site)

    objects = models.Manager()
    on_site = CurrentSiteManager()

    def __unicode__(self):
        return self.title

class Entry(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField()
    body = models.TextField()
    author = models.ForeignKey(User)
    weblog = models.ForeignKey(Weblog)
这就是我困惑的地方。我理解网络日志的概念,它包括一个站点和一个用户。但是,如何限制此人只查看和添加/编辑为其创建的自己的博客上的条目


谢谢

是的,Django站点框架可以做到这一点。由于我没有太多关于你已经做了什么的信息,我真的不能帮助你,所以请提供更多的细节

也检查一下

编辑好的,我现在明白了,您的问题是限制用户仅查看和编辑其专用站点的内容。这有点复杂

这取决于您是使用管理界面还是自定义视图来处理此视图和编辑。如果您使用自定义的查询集,可以很容易地更改所使用的查询集,但我认为您可以使用管理界面

在这种情况下,也许用CurrentSiteManager()覆盖默认管理器(对象)可以完成这项工作。但是

  • 它可能有副作用,不建议覆盖默认管理器,您需要测试它(第一个副作用是:您不会有所有站点上所有编辑的列表)
  • 您必须确保用户A不能登录站点B管理界面
另一个解决方案可能是为这些网站中的每一个创建自定义管理员。请参阅管理文档

但是,有一个问题:如果你不想让用户编辑这些网站上的内容,你是否需要一个唯一的界面来访问所有这些管理网站?例如,让一个人能够编辑所有网站上的内容) 如果不是的话,也许网站框架不是一条路要走,你最好让每个网站独立和清晰地分开

另一个解决方案是考虑Django的可能性,它允许您定义视图的自定义权限。我认为(还没有尝试过)它也可以用来保护管理员视图


我希望这能有所帮助。

Django站点权限应用程序将完全做到:

如果它满足您的需要,您可以将其集成到项目中,或者检查源代码以了解如何实现站点范围的权限


(免责声明:我是django site permissions应用程序的开发人员)

我为您编辑了该应用程序,可能会有所帮助。这是我用来构建其他东西的一个小例子,但同样的原则也适用。希望有帮助