我刚刚开始使用Django进行个人项目.
使用内置管理应用程序与将我的管理功能集成到应用程序本身(通过检查request.user.is_staff)有什么优缺点?
这是一个社区维基,因为它可以被视为民意调查.
出于多种原因,我会使用Django的管理员应用程序.首先,编写一个管理应用程序可能非常棘手,如果你想做正确的话需要一些时间,并且django.contrib.admin
是免费的,并且开箱即用.其次,它设计得非常好,非常适合(即使是非技术用户).第三,它涵盖了很多常见案例,在你真的确定不能这样做之前,浪费时间重写它似乎并不明智.第四,定制并不是那么困难.例如,添加akismet mark-as-spam和mark-as-ham按钮确实是件小事.
这真的取决于我猜的项目.虽然您可以在管理员中执行所有操作,但当您的应用程序变得更复杂时,使用管理员也会变得更加复杂.如果你想让你的应用程序真的很容易管理,你需要控制每一个细节,这对管理员应用来说是不可能的.
我猜你应该这样看:
使用django admin:节省写入时间,浪费时间使用它.
滚动自己的管理员:浪费时间编写它,节省使用它的时间.
在不同程度上有选择地覆盖部分管理员是如此容易.
您可以:
按应用程序或甚至逐个模型覆盖应用程序上的管理模板.
通过继承和子类化覆盖管理视图
通过在urls.py中将它们放在它之前来捕获管理员URL,并提供基于管理员外观的自己的界面
......还有更多.
因此,从管理员开始,然后插入您需要的任何自定义功能.
有很多应用程序可以与管理员做出聪明的事情.例如:
django-reversion接管管理日志并将其扩展到完整的历史记录.
Tusk CMS以简洁的方式将django-mptt应用程序与JQuery嵌套的可排序小部件相结合.
同时搜索django-snippets以获取管理员相关的片段,此页面有丰富的信息.