同时使用Django管理员和自定义用户特定管理员

同时使用Django管理员和自定义用户特定管理员,django,web-applications,django-admin,crud,Django,Web Applications,Django Admin,Crud,我正在创建一个以Django为动力的网站,该网站将有许多应用程序(博客、商店、公文包等),这些应用程序将由5个左右的人编辑,到目前为止,我一直在设计Django管理员的一切 我逐渐意识到,这是一种非常糟糕的思维方式——事实上——Django管理员应该只为顶级管理员服务,并且应该准确地用于管理网站,而不是为网站贡献力量 我写下了功能集,并意识到整个网站应该拥有的应用程序数量(网站地图、邮件、联系人表单、评论、标签等)远大于编辑应该访问的功能数量(博客/关于部分的CRUD操作等) 构建一个复杂的基于

我正在创建一个以Django为动力的网站,该网站将有许多应用程序(博客、商店、公文包等),这些应用程序将由5个左右的人编辑,到目前为止,我一直在设计Django管理员的一切


我逐渐意识到,这是一种非常糟糕的思维方式——事实上——Django管理员应该只为顶级管理员服务,并且应该准确地用于管理网站,而不是为网站贡献力量

我写下了功能集,并意识到整个网站应该拥有的应用程序数量(网站地图、邮件、联系人表单、评论、标签等)远大于编辑应该访问的功能数量(博客/关于部分的CRUD操作等)

构建一个复杂的基于权限的Django管理员,或者构建第二个自定义的“编辑器”管理员以并发运行,这是更好的做法


我认为这应该在文档中讨论,因为在我意识到这一点之前,我在理解如何将网站分解为应用程序时遇到了很多困难,因为我在设计每件事时都考虑到了管理员(以及实际用户应该在管理员中看到什么)

我认为这是一个意见问题。但就个人而言,我更喜欢创建一个单独的管理员,并将用户组链接到该管理员组,而不是同时使用主管理员


这样,当出现问题时,您可以很容易地看到其他用户的情况。这一切都取决于你的情况,所以我认为你应该建立一个独立的“多样化”管理应用程序。以下是我看到的优点和缺点:

优点:

  • 无需篡改管理或使用黑客获得特定功能。考虑到你的要求,我想你需要几件这样的东西

  • 从管理员处解除耦合。虽然Admin非常有用,但将应用程序与之紧密结合是个坏主意。如果您正在调整它,则更是如此。您必须注意管理员的任何更改,这将破坏您的应用程序

  • 自定义样式。我猜视觉吸引力在你的列表中可能不高,但它比管理员应用更容易设计你的应用

  • 将真正的超级用户与“一线管理员”分开。只有超级用户才能看到系统的真正内部

  • 缺点:

  • 你会重新发明轮子。通用视图使这变得更容易,但最终还是会复制特性或Featurelet

  • 测试。管理应用程序被广泛使用,并且经过了相当好的测试。您可以在不编写任何单元测试的情况下使用它(大部分情况下)。如果您构建了自己的测试,那么您必须围绕它构建一个广泛的测试套件


  • 赞成。就设计和最佳实践而言,这似乎真的是一个解决方案。对我来说,Django管理员用于后端配置。在我的例子中,最终用户是编辑器,他们应该通过与管理员不同的界面编辑内容。我不会真的认为它重新发明了轮子,尽管我将使用管理界面无论如何,这是一个附加的一个“我已经开始意识到这是一个非常糟糕的思维方式-就像真的——Django管理员应该只针对顶级管理员”——我不得不说,我已经使用Django一段时间了,我不同意这种说法。我认为管理员的编写方式也表明你错了-注意
    User
    -
    is_staff
    is_superuser
    上的方法-工作人员可以访问管理员,但当他们到达那里时,权限可能非常有限。也就是说,你显然可以自由选择是否使用管理员:)我并不认为管理一个网站和管理一个网站是一样的。我觉得Django admin绝对是一款功能强大、编写精良的应用程序,可以让网站或项目保持顶级运行。但反向工程是允许“员工”进入特定区域的解决方案吗?它们肯定是两个不同的东西吗?AuthApple应用程序与Admin是分开的,我将考虑那些函数(iSuffStand和iSuxUpHealver)作为其他应用程序中使用的建议。我在这里扮演魔鬼代言人