我使用网站框架从一个代码库运行多个应用程序。我有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)
这是我感到困惑的地方。我理解博客的概念,其中也包含对网站和用户的引用。但是,如何限制该人只看到并添加/编辑他们为自己创建的博客上的条目?
由于
答案 0 :(得分:1)
是的,Django站点框架可以做到这一点。由于我没有太多关于你已经做过的信息,我无法真正帮助你,所以请提供更多细节。
同时检查the specific documentation。
编辑好的,我现在明白了,您的问题是限制用户仅查看和编辑有关其专用网站的内容。这有点复杂。
这取决于您是使用管理界面还是自定义视图来处理此视图和编辑。如果您使用自定义的,可以轻松更改所使用的查询集,但我想您使用管理界面。
在这种情况下,使用CurrentSiteManager()覆盖默认管理器(对象)可以完成这项工作。但是
另一种解决方案可能是为这些网站中的每一个创建自定义管理员。请参阅管理员文档。
但是,只是一个问题:如果您不想让用户在每个网站上编辑内容,您是否需要为所有这些管理网站提供唯一的界面?例如,让一个人能够编辑所有网站上的内容) 如果没有,也许站点框架不是可行的方法,你应该更好地使每个网站独立并明确分开?
另一个解决方案是查看Django的permissions可能性,它允许您为视图定义自定义权限。我认为(尚未尝试过)它也可用于保护管理员视图。
我希望这可以提供帮助。
答案 1 :(得分:0)
Django-site-permissions应用程序就是这样做的:
https://github.com/bmihelac/django-site-permissions
如果满足您的需求,您可以将其集成到项目中,或者检查源代码以了解如何实现站点范围的权限。
(免责声明:我是django-site-permissions app的开发者)