2

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

这是我困惑的地方。我理解一个博客的概念,同时也引用一个网站和一个用户。但是,那么如何限制该人只能看到并添加/编辑他们自己创建的博客上的条目呢?

谢谢

回答

1

是的,Django网站框架可以做到这一点。由于我对你已经做了什么没有太多的信息,我无法真正帮助你,所以请给出更多细节。

另请检查the specific documentation

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

这取决于您是否使用管理界面或自定义视图来处理此视图和编辑。如果你使用自定义的,可以很容易地改变使用的查询集,但我想象你使用管理界面。

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

  • 它可以有副作用,覆盖不建议默认的经理,你需要对其进行测试(第一个副作用是:你不会有所有编辑上的所有网站的列表)
  • 您必须确保用户A无法登录站点B管理界面

另一种解决方案可能是为这些网站中的每一个创建自定义管理员。查看管理员文档。

但是,只是一个问题:如果你不想让用户在这些网站的每一个上编辑内容,你是否需要有一个独特的界面到所有这些管理网站?例如,让一个人能够编辑所有网站上的内容) 如果没有,也许网站框架是不是要走的路,你应该更好地使每个网站独立和明确分开?

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

我希望这可以提供帮助。

+0

我编辑为你DAKS,也许这将有助于。这是我用来构建别的东西的一个小例子,但同样的原则适用。希望有所帮助 – JeffTaggarty 2011-02-11 05:47:18

0

Django的站点的权限的应用程序会做到这点:

https://github.com/bmihelac/django-site-permissions

您可以在您的项目是否符合您的需求,或者检查源代码,看看网站范围的权限如何实现整合。

(免责声明:我的Django站点的权限应用的开发者)