Django实战
django
Django的第一印象
Django (/ˈdʒæŋgoː/) 是用python语言写的开源web开发框架(open source web framework),鼓励快速开发,并遵循MTV设计模式。其主要目的是简便、快速的开发数据库驱动的网站。
Django遵守 BSD版权,目前最新的稳定版(stable)是2011年9月发布的v1.3.1。
Django 的名称来源于比利时的爵士音乐家Django Reinhardt,他是一个吉普赛人,主要演奏吉它。
与rails一样,Django强调 松耦合 、 少写代码 、 快速开发 、 DRY 、 一致性 等原则。但Django与rails在设计哲学上最大的不同在于,Django强调“ 显示说明优于隐含意义 ”,这一点来自于Python的核心原则。
这一设计哲学的不同使得Django与rails有很大的不同:Django不喜欢“魔术代码”。尽管魔术代码看起来很酷,但是存在着如下问题:
1)语法晦涩难懂,除了编程语言外,你还需要了解一门自定义的DSL
2)相对于编程语言,DSL更加不稳定,可能会经常变化
3)如果你想理解其实现方式,需要花费比较大的精力
4)魔术代码可以很容易地实现某些特定的功能,但是如果你想在此基础上做一些改变,就会变得非常困难
所以,Django不喜欢“魔术代码”,而是强调代码的 可理解、可控制 。
比如《Agile Web Development with Rails》中开篇用来吸引人的那个例子,一个关于项目的Model类:
看上去很神奇对吗?但是你马上就会提出几个问题:
1)除了关联关系外,对象自身的属性在哪里定义?
2)non_discolosure_agreement是什么属性?
3)validates_xxx 之类的语法到底有多少种?
...
本文并不是以介绍rails为主,所以上述问题在这里不作回答。但是为了与Django的Model对比,还需要补全rails 模型的另外一个部分:migration。事实上,在rails中,上面的Model还需要一个db migrate 类一起才能工作:
Django的设计是 以Python类的形式定义数据模型,通过ORM与数据库联系起来。同时约定为了避免“猜谜游戏”,不应该仅仅依赖字段的命名来预示其可能的行为,而是通过关键的参数来定义操作。
上述Model类在Django中以如下简单明了的方式来实现:
Django的代码清楚明白,每一条语句都很明确。这就是Django的风格。(顺便说一句,Django的灵活性不以牺牲外键关联为代价,而rails的数据库中不支持外键关系)
Django实战(18):提交订单
posted @ 2012-02-19 23:03 Holbrook 阅读(43) | 评论 (2) 编辑
Django实战(17):ajax !
posted @ 2012-02-19 23:02 Holbrook 阅读(15) | 评论 (0) 编辑
Django实战(15):Django实现RESTful web service
posted @ 2012-02-19 23:00 Holbrook 阅读(24) | 评论 (0) 编辑
Django实战(14):让页面联动起来
摘要: 上一节我们实现了一个”能看不能用“的购物车,现在我们来使用这个购物车。首先是产品目录界面中的”加入购物车“链接,我们希望点击这个按钮后,在购物车中添加该产品(添加的规则是如果购物车中已经有该产品就增加... 阅读全文
posted @ 2012-02-19 22:58 Holbrook 阅读(11) | 评论 (0) 编辑
Django实战(13):在session中保存购物车
摘要: 现在,我们有了一个产品目录界面,用户如果看到满意的产品,就可以将其放入购物车。下面就让我们来实现购物车的功能。首先要做一下简单的分析和设计。购物车应该显示一系列产品的清单,其中列出了买方选中的产品。... 阅读全文
posted @ 2012-02-19 22:53 Holbrook 阅读(16) | 评论 (0) 编辑
Django实战(12):增加目录页,设定统一布局
摘要: 针对上一节的新需求,界面设计师还为我们设计了一个新的界面,不仅仅是目录页,还包含了站点的整体风格,如下图:感谢界面设计师为我们提供的“又黑又硬”的工具条,这个看起来真的很酷。下面,让我们来享用她的工作... 阅读全文
posted @ 2012-02-19 22:48 Holbrook 阅读(17) | 评论 (0) 编辑
Django实战(11):修改Model类
摘要: 我们已经实现了卖方的产品维护界面,根据最初的需求,还要为买方实现一个目录页:买方通过这个界面浏览产品并可以加入购物车。通过进一步需求调研,了解到产品有一个“上架时间”,在这个时间之后的产品才能被买方看... 阅读全文
posted @ 2012-02-19 22:44 Holbrook 阅读(13) | 评论 (0) 编辑
Django实战(10):单元测试
摘要: 尽早进行单元测试(UnitTest)是比较好的做法,极端的情况甚至强调“测试先行”。现在我们已经有了第一个model类和Form类,是时候开始写测试代码了。Django支持python的单元测试(un... 阅读全文
posted @ 2012-02-19 22:42 Holbrook 阅读(12) | 评论 (0) 编辑
Django实战(9):实现Product的输入校验
摘要: 让我们完成上一节中的任务:1.验证price>0:需要在Form中验证; 2. 验证title唯一:在Model中验证; 3. 验证image_url的扩展名:在Form中验证,还可以顺便在Model... 阅读全文
posted @ 2012-02-19 22:39 Holbrook 阅读(14) | 评论 (0) 编辑
Django实战(8):对比RoR与Django的输入校验机制
摘要: rails有一个”简洁、完美的验证机制,无比强大的表达式和验证框架“。在《Agile Web Development with Rails 4th》一书的7.1节向我们展示了如何验证Product:c... 阅读全文
posted @ 2012-02-19 22:33 Holbrook 阅读(30) | 评论 (0) 编辑
Django实战(16):Django+jquery
posted @ 2012-02-19 22:00 Holbrook 阅读(820) | 评论 (2) 编辑
Django实战(2):创建第一个模型类
posted @ 2012-02-18 23:59 Holbrook 阅读(104) | 评论 (0) 编辑
Django+jquery 什锦(1):集成Django和jquery
posted @ 2012-02-18 00:28 Holbrook 阅读(66) | 评论 (0) 编辑
戏说WSGI(Python Web服务网关接口)
posted @ 2012-02-14 19:49 Holbrook 阅读(14) | 评论 (0) 编辑
深入Django(2):自定义ORM
posted @ 2012-02-14 01:00 Holbrook 阅读(5) | 评论 (0) 编辑
Django技巧:改变Admin中显示的应用(app)名称
posted @ 2012-02-13 18:18 Holbrook 阅读(3) | 评论 (0) 编辑
深入Django(1): 通用视图 (generic views)
摘要: 内容提要 1. 回顾Django的视图函数(view function) 2. 在视图函数中使用模板 3. 简化视图函数的两个工具 4. 使用通用视图函数 5. Django提供的通用视图 阅读全文
posted @ 2012-02-12 00:57 Holbrook 阅读(56) | 评论 (0) 编辑
Django实战(24):总结
posted @ 2012-02-10 16:58 Holbrook 阅读(32) | 评论 (0) 编辑
Django实战(23):权限控制
posted @ 2012-02-10 15:50 Holbrook 阅读(6) | 评论 (0) 编辑
Django实战(22):处理登录和注销
posted @ 2012-02-10 10:29 Holbrook 阅读(6) | 评论 (0) 编辑
Django实战(21):使用内置的Amin管理用户
posted @ 2012-02-09 23:44 Holbrook 阅读(9) | 评论 (4) 编辑
Django实战(20):分页(Pagination)
posted @ 2012-02-09 20:33 Holbrook 阅读(5) | 评论 (0) 编辑
Django实战(19):自定义many-to-many关系,实现Atom订阅
posted @ 2012-02-09 15:30 Holbrook 阅读(4) | 评论 (0) 编辑
Django实战(7):改造ProductList界面
posted @ 2012-01-31 19:02 Holbrook 阅读(7) | 评论 (0) 编辑
Django实战(6):对比RoR和Django的模板系统
posted @ 2012-01-31 18:07 Holbrook 阅读(6) | 评论 (0) 编辑
Django实战(5):引入bootstrap,设置静态资源
posted @ 2012-01-31 11:58 Holbrook 阅读(6) | 评论 (0) 编辑
Django实战(4):scaffold生成物分析
posted @ 2012-01-30 23:25 Holbrook 阅读(6) | 评论 (0) 编辑
Django实战(3):Django也可以有scaffold
posted @ 2012-01-30 14:34 Holbrook 阅读(9) | 评论 (0) 编辑
Django实战(1):需求分析和设计
posted @ 2012-01-29 19:56 Holbrook 阅读(16) | 评论 (0) 编辑
Django第一步
posted @ 2012-01-29 18:31 Holbrook 阅读(30) | 评论 (0) 编辑
URLconf+MTV:Django眼中的MVC
posted @ 2012-01-29 15:29 Holbrook 阅读(14) | 评论 (0) 编辑
Django的第一印象
posted @ 2012-01-29 14:39 Holbrook 阅读(28) | 评论 (0) 编辑
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息