gpt4 book ai didi

Django 站点框架权限

转载 作者:行者123 更新时间:2023-12-05 05:29:00 24 4
gpt4 key购买 nike

我正在使用站点框架从一个代码库运行多个应用程序。我有 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 站点框架可以做到这一点。由于我没有太多关于你已经做过的事情的信息,我真的帮不了你,所以请提供更多细节。

同时检查 the specific documentation .

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

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

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

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

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

但是,只是一个问题:如果您不想让用户编辑这些网站中每一个的内容,那么您是否需要为所有这些管理网站提供一个独特的界面?例如让一个人能够编辑所有网站上的内容)如果不是,也许站点框架不是要走的路,你最好让每个网站独立并明确分开?

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

希望对您有所帮助。

关于Django 站点框架权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com