Authors: | limodou |
---|---|
Date: | 2006-02-26 |
已经发布到0.91,正在开发Magic-removal。我正在开发woodlog,而唐晓平与我合作。同时他还在开发一个类似的base系统。
特点:
以App的方式组织。一个App可以是一个包含数据库的处理,也可以只有tag库。一个 App 首先要安装,然后models会自动安装。对于定义在 App 中的 templatetags 如要使用也需要安装 App。
请求-->中间件-->View-->输出 | | v 模板,其它加工
请求:request对象 中间件:middleware,如session, gzip,locale等 View:用户定义,也有一些预置的View代码,如generic_view等 模板:可以处理模板和tag 输出:response
URL是一个网站功能的体现,通过它可以实现功能的划分,同时URL的设计还会影响 Model 的设计。比如下面将介绍的 Woodlog 是一个Blog系统,因此blog是它的主体。让我们先以单用户 blog 来简单地说明:
host/blog/yyyy/mm/dd.html
这表示一个 Blog 的贴子。从这个 URL 可以看出它的功能位于 blog 之下。然后是 Blog 的定位机制。可以分为:
blog/yyyy/mm/dd.html 这是单个贴子 blog/yyyy/mm 这是某个月的列表 blog/ 表示blog的首页 blog/categories/xxx 表示某个分类 blog/tags/xxx 表示某个tag分类
这些都与 blog 有关。在woodlog中还有一些其它的功能,如用户登录,则url是以 account/开头
良好的 URL 是设计出来的,而且也有许多现成的示例可以参考。从上面的示例可以看出很象 ZOPE 的对象访问方式,即对象/方法或对象/属性,依此类推。
Model在Django中占很大的比重,对于 Model 的良好设计会为以后的维护和使用带来极大的便利。特别是 Django 提供了 Admin 的自动化处理功能,使得你在许多情况下不用考虑管理功能的实现,但使用 Admin 的话要考虑类之间的引用方式的问题。比如A与B是多对一的关系。即一个A可以对应多个B。那么在 Django 中定义为:
class A(models.Model):pass class B(models.Model): a = ForeignField(A)
那么B可以直接访问A中的属性通过objectB.a.XXXX。而A访问B时通过 objectA.b_set.all() 来处理。同时在 Admin 中可以通过 B 的界面来直接访问到 A ,而从A的管理界面则不行。原因就是 B 中直接存储了 A 的信息。而 A 却不知道 B 的信息。因此,如果在使用 Admin 时你希望通过一个 Model 来访问另一个 Model 的话,需要考虑它们之间的引用关系。
Django 模板最大的特点是支持tag, filter自定义,还支持i18n。模板之间可以嵌套。自定义tag, filter则可以简化页面的生成。
因为Admin带来的巨大便利,使得我们的主要注意力集中在了用户展示上。这也是许多人高度赞赏django的地方。
由我和唐晓平一起开发。目标是实现多用户的blog系统,目前基本实现单用户的blog管理。目前已经完成了用户注册和认证功能,评论功能,标签功能,EasyForm(快速生成表格处理)功能。正在实现的是profile和多用户的整合。在开发过程中了解了更多 django 的细节,同时也了解了 django 的不足,以及考虑如何去改进。希望woodlog最终可以用在啄木鸟社区,它作为中国一个正式的django项目,可以对django起来宣传的作用,同时完善django的教程分享心得,吸引更多的人来学习。
展示woodlog的一些基本功能
有关woodlog开发的问题