我应该使用Django的管理功能吗?

时间:2011-09-12 01:27:28

标签: django django-admin django-forms

我正在构建一个基于Django的评论网站,公共用户可以在该网站上创建网站上的所有内容。用户创建对给定项目的评论,他们还创建将被审查的项目(提供项目的描述和简要摘要,以及一些标签)。

我的问题是:我是否应该在本网站上使用Django的管理功能(如,向公众用户公开管理控制)?或者我应该坚持正常形式?我不太熟悉Django的管理方面,到目前为止我一直在使用网站的表单,但我看到很多人都在谈论Django的管理功能,我开始怀疑如果我应该使用它们。

感谢您的反馈!

3 个答案:

答案 0 :(得分:9)

也许。如果管理功能涵盖了您想要提供的大部分功能,那么就没有理由不将它作为起点。

django.contrib.admin是一个与其他应用程序一样的应用程序,它基本上为您的模型提供了一个CRUD接口。可以通过组/权限来控制访问,就像您自己编写的应用程序一样。您可以完全访问具有单行的模型,但显然在打开其他人时必须正确配置。

另见我的问题 Django AdminSite/ModelAdmin for end users? 和类似的问题Exposing django admin to users. Harmful?How to make Django admin site accessed by non-staff user?

关于管理员“预期用途”的论点,请注意Django去年年底的安全更新:http://www.djangoproject.com/weblog/2010/dec/22/security/关于对象列表中的查询字符串参数。这样的更新(引用:“有权访问管理员的攻击者”)清楚地表明管理员对权限系统的实现正在不断受到审查。

答案 1 :(得分:3)

我不会将管理界面暴露给普通用户。您可以使用身份验证和用户管理方面(出于您的目的),但通常最佳做法是为用户提供单独的方法来管理其对象。您也不会冒很大的风险向用户授予错误的权限(或允许他们授予自己的权限)。

如果您想更好地了解它可以做什么,请阅读文档(https://docs.djangoproject.com/en/dev/ref/contrib/admin/)。

答案 2 :(得分:3)

没有。 django管理员不适合任何最终用户。

django管理员功能旨在帮助网站开发人员,就是这样。即使是站点管理员的使用也是禁忌的,尽管在实践中大多数小型站点都会使用它,因为他们只会谈论一些可以在遇到问题时亲自打电话给开发人员的人。

出于您的目的,审核项目和创建项目的工作流程是应用程序功能集的关键部分。管理员会给你一些想法,但尝试在其上构建应用程序是错误的。