我正在创建一个Django支持的网站,该网站将有大量的应用程序(博客,商店,产品组合等),将由5个左右的人编辑,到目前为止我一直在使用Django管理员设计所有内容。心神。
我已经意识到这是一种非常糟糕的思维方式 - 实际上 - Django管理员应该只适用于顶级管理员,并应该用于这一点:管理网站,没有贡献。
我写出了功能集,并意识到整个网站应该拥有的应用程序数量(站点地图,邮件程序,联系表单,评论,标签等)远远大于编辑应该访问的功能数量。 (关于博客/关于部分的CRUD行动等)。
更好的做法是构建基于Django管理员的复杂权限,或构建第二个自定义“编辑”管理员以同时运行。
我认为这是应该在文档中讨论的内容,因为直到我意识到这一点,我在理解如何将网站分解为应用程序方面遇到了很多麻烦,因为我在考虑管理员时设计了所有内容(以及实际用户应该在管理员中看到什么
答案 0 :(得分:3)
我认为你应该建立一个单独的“多样化”管理员应用程序。以下是我看到它们的优点和缺点:
<强>优点:强>
无需篡改管理员或使用黑客获取特定功能。我怀疑你需要几个这样的要求。
从管理员处取消耦合。虽然管理员非常有用,但将应用与其紧密结合是一个坏主意。如果你正在调整它,那就更是如此。您必须注意管理员中可能会破坏您应用的任何更改。
自定义样式。我想您的列表中的视觉吸引力可能不高,但是应用程序的样式要比管理员应用程序更容易。
将真正的超级用户与“线路管理员”分开。只有高级用户才能看到系统的真实内部。
<强>缺点:强>
你要重新发明轮子。通用视图使这更容易,但您仍然最终复制功能或featurelet。
测试。 Admin应用程序被广泛使用并且经过了相当好的测试。您可以在不编写任何单元测试的情况下使用它(大多数情况下)。如果您自己构建,则必须围绕它构建一个广泛的测试套件。
答案 1 :(得分:0)
我认为这是一个意见问题。但我个人更喜欢创建一个单独的管理员并将用户组链接到该管理员而不是使用主管理员。
通过这种方式,您可以轻松查看出现问题时其他用户的所有内容。这一切都取决于你的情况,所以YMMV