Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7624899 建立时间:2006年5月29日 |

| |
[Django]翻译www.djangobook.com之第六章:Django管理系统admin 软件技术
lhwork 发表于 2007/1/28 15:54:37 |
The Django Book:第6章 Django管理系统admin
Web开发中有一些我们最讨厌的部分:开发管理界面
开发站点中公众可以看见的部分一直不一样也很有趣,但是管理用来编辑站点的部分一直是一样的
你不得不处理用户认证,显示和处理表单,处理狡猾的验证问题...这很无聊而且是重复性的
Django解决这个无聊、重复的任务的方式呢?已经帮你都做好了,只需几行不能再少的代码即可
Django中最老和最强大的部分就是自动管理界面,它从你的模型中取得元数据来提供强大的产品级的界面
内容制造者可以马上使用它给站点添加内容
激活管理界面
我们认为管理界面是Django中最cool的部分,大部分Djangonauts也同意这点
但是由于不是每个人都需要它,它是一个可选的部分
有3个步骤来激活管理界面:
1,向你的模型添加admin metadata
并不是所有的模型都可以或者应该被admin用户编辑,所以你需要标记那些需要管理界面的模型
上一章的Book模型添加一个管理界面的方法就是:
代码class Book(models.Model): title = models.CharField(maxlength=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() class Admin: pass
注意这里包括了最后的逗号,Python使用它来区分单元素元组和括号括起来的表达式
现在把admin/base_site.html从Django的admin模板目录(django/contrib/admin/templates)复制到
TEMPLATE_DIRS下的admin子目录下,admin是新建的子目录
然后编辑admin/base_site.html,用你自己的站点的名字替换Django文本
注意任何Django的默认admin模板都可以覆盖,只需像base_site.html一样覆盖模板
即从默认目录复制你的自定义目录然后改变这个副本
敏锐的读者可能想知道,如果TEMPLATE_DIRS默认是空的,Django是怎样找到默认的admin模板的?
答案是,默认情况下Django自动在每个app包下搜寻templates/子目录下的模板
看看第10章的“模板载入器”你将了解关于它的更多信息
定制管理系统首页
同样需要注意的是,你可能想定制Django的admin首页外观
默认时它将根据INSTALLED_APPS并按程序名排序显示所有的apps
尽管如此,你可能想改变这个显示顺序来使你更容易找到你要的apps
毕竟首页时admin最重要的页面,它应该很容易使用才行
需要定制的模板时admin/index.html,记得把admin/base_site.html复制到你的自定义模板目录
编辑这个文件,你将看到它使用模板标签{% get_admin_app_list as app_list %}
这就是得到所有安装的Django app的魔法所在
你可以用你认为最好的方法硬编码对象专有的admin页面来替换这个标签
如果你不太明白硬编码链接,可以参考第10章的实现你自己的模板标签的细节
Django在这个地方提供另一个捷径,运行python mange.py adminindex <app>来在admin首页模板
包含一些模板代码,开始时这十分有用
参考第12章关于定制Django的admin站点外观的细节
何时使用和为什么使用管理界面
我们认为Django的admin界面很神奇,事实上,我们称它为Django的一个“杀手级特性”
尽管如此,我们经常被问到admin的“use cases”这个问题,即什么时候我们使用它,以及为什么使用它?
这几年我们讨论了许多使用admin界面可能有帮助的模式
显然它对于编辑数据十分有用,如果你有一些数据输入的任务,admin就是你想要的
我们也发现admin在下面几种情况下十分有用:
1,检查数据模型,当我们定义一个新模型后第一件事就是在admin里面激活它并且输入一些模拟数据
发现一些数据模型错误是很常见的,有一个图形界面来揭露这些错误会很有用
2,管理需要的数据,例如对于chicagocrime.org有自动的数据数据产生源,但是当数据源出现问题,
我们可以通过admin很轻松的编辑数据
下一步是什么
到目前为止我们创建了一些模型并且配置了一个高级界面来编辑数据,下一章我们将进入到Web开发
真正的“肉和马铃薯”:表单创建和处理
所以,再弄一杯你最爱的饮料,让我们开始新的征程... |
|
|