Django的管理面板是否只是临时脚手架?

时间:2010-02-25 18:13:49

标签: django django-admin scaffolding

我已经成功地为内部用户使用了Django的管理面板一段时间,但我最近在试图自定义它时遇到了困难,我很好奇我是否花了太多时间在它上面。所以,我的问题是:

Django的管理面板是否只是临时脚手架,即仅在应用程序的初始开发期间使用,并被类似于Rails脚手架的自定义代码替换?

显然,通过使用管理面板,我可以免费获得许多功能,并且随着新功能的添加,我也可以免费获得这些功能。其他人做了什么?

5 个答案:

答案 0 :(得分:5)

我不会说管理员是临时脚手架,但它可能不是许多案例的最佳选择。我曾与一家知名的媒体公司合作,该公司使用管理员作为其制作人和编辑人员的整个工作流程界面的基础。不幸的是,关于何时或何时不使用管理员的决策过程将在很大程度上受益于您对Django内部的整体了解;在获得经验之前,你可能会被卡住几次,以便知道何时不会卡住。 :P

管理员的“可定制性”可能有点主观。我已经看到团队屈服于他们的意愿,但它还需要一个非常好的工作知识,模型,表单(以及自然的东西,如ModelForms和FormSets)和模板的低级细节。我认为很多传统智慧和最佳实践尚未出现在有组织的文档中。准备好在源代码中进行大量挖掘。好消息是,您可能会更深入地了解如何利用框架中的一些一流实体。坏消息是你的老板可能不会高兴你花了大半天时间来改变表格上的单一输入。

最近的增强功能使您可以更轻松地将自己的视图放置在管理网址空间下,这样您就可以考虑编写自己的视图以满足您的需求,并在标准管理页面中的适当位置添加链接。我通常建议那些刚刚接触Django的人或刚刚进入管理员定制的人强烈考虑只是滚动你自己的管理视图。毕竟,Django已经让创建CRUD风格的应用程序变得非常容易,并且当你想要改变演示或行为时,你不必觉得你正在与僵硬的系统作斗争。

答案 1 :(得分:3)

Django Admin适用于除了提供的默认添加/更改/删除处理之外没有其他任何价值的事情。

数据库中充满了查找和管理表。例如,没有最终用户应该看到的zip-code到状态映射。后台批处理作业执行的日志。

您的应用可能会有一些表格,这些表格或多或少都是“管理” - 有人维护它们,但不是大型用户社区。

您的应用可能会有一些表供最终用户添加/更改/删除。您可能希望为此活动提供广泛的自定义页面。

Django在新闻业中长大。作家和编辑准备数据(使用管理界面)。客户通过自定义网页阅读数据。

我们有使用管理页面的管理人员。我们为客户定制了页面。我们两个都用。

我们为内部管理员提供几乎所有内容的默认管理页面。我们为选定的表提供客户端管理员的默认管理员。我们为客户提供精心设计的特定应用页面。

答案 2 :(得分:3)

6个月前,当我第一次在Django开始时,我问了一个类似的问题。

Is it worth it using the built-in Django admin for a decent sized project?

对于那个特定的应用程序,我选择而不是来使用Django管理员,事后看来这是一个非常聪明的决定。从那时起,我一般都没有使用过它,但有时会出现很棒的情况。对我来说,这取决于用户。如果我们正在为客户构建一个自定义数据驱动的应用程序并正在处理它们提供的功能集,我将永远不想使用Django管理员。在这些情况下,几乎可以肯定他们会有一些变化,这可能是一个真正的痛苦,试图在管理员工作。如果它是一个不断发展的项目,那么这些变化将变得越来越糟糕,你可能最终不得不开始将部分拆分到网站的非Django管理部分,此时现在有两个接口可以做东西。

然而,如果客户更接受应用程序的工作方式,那么Django管理员就可以了,假设您的表与他们正在处理的数据之间通常有1:1的对应关系。 / p>

正如Brian Luft所说,为CRUD应用程序创建界面非常容易,所以如果你觉得将来需要任何自定义,那么从一开始就编写自己的自定义可能最简单。作为超级用户,您可以始终保持django管理员满足您自己的需求。这通常就是我所做的,因此我可以轻松地使用表级访问权限来更改普通用户admin中可能未显示的字段。

答案 3 :(得分:1)

不,我不会将它与Rails的脚手架进行比较。从你的问题中不清楚你遇到了什么样的问题 - 你能提供一个例子吗?

您可以通过添加custom ModelAdmin类对管理员进行大量自定义:隐藏字段,显示其他字段,允许在同一页面上编辑相关项目或限制/过滤显示在一个外键领域。您还可以通过向首页添加排序,过滤器,搜索字段,使用户更容易找到。较新版本的Django还允许您创建自己的自定义命令,可以同时应用于多个对象。

但如果问题不在于基本更改列表和编辑表单,则可以通过创建特定于模型的模板和overriding the default admin templates.

来完全自定义这些问题。

答案 4 :(得分:0)

不,你可以肯定用它来管理你的网站,但正如Django所说;仅限受信任的用户。所以,如果你创建一个cms,它很棒。因为(希望)后端用户将是受信任的用户!