Django是什么?
Django是一个开放源代码的Web应用框架,由Python写成。
Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
什么是Web框架?
Web框架为应用程序提供了一套程序框架, 这样你可以专注于编写清晰、易维护的代码,而无需从头做起。
简而言之:框架就是一个毛坯房,你可以在此基础上做任何所需要的修改,从而达到你想要的结果,而你就像是装修工,成品房就是结果。
什么是MVC?
MVC是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来。这种设计模式关键的优势在于各种组件都是松散结合的.
是不是有些像,我们上学时候的三段式作文?说白了就是固定格式,让你更关注段落里面,而不用操心好不好看。
简而言之:一台电脑要有显示器,主机,外设。让他们结合起来从而能够更好的工作。
优缺点
优点
- 完美的文档,Django的成功,我觉得很大一部分原因要归功于Django近乎完美的官方文档
- 自助管理后台,admin interface 是Django里比较吸引眼球的一项,让你几乎不用写一行代码就拥有一个完整的后台管理界面。
- 虽然 Django 自带的 ORM 不如 SQLAlchemy 强大,但也不弱。一般来说可以不怎么使用 SQL 语句,每条记录都是一个对象,而取对象的关联,易如反掌。
- URL design,可以设计出非常优雅的URL。
- 全套的解决方案,Django象Rails一样,提供全套的解决方案(full-stackframework + batteries included)
- Django 的 App 理念很好。App 可插拔,是不可多得的思想。不需要了,可以直接删除,对系统影响不大。
缺点
- 系统紧耦合,如果你觉得 Django 内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的 ORM、Template。要在 Django 里用 SQLAlchemy 或 Mako 几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。
- Django 自带的 ORM 远不如 SQLAlchemy 强大,除了在 Django 这一亩三分地,SQLAlchemy 是 Python 世界里事实上的 ORM 标准,其它框架都支持 SQLAlchemy 了,唯独 Django 仍然坚持自己的那一套。Django 的开发人员对 SQLAlchemy 的支持也是有过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟 Django 其它的模块很难合到一块。
- Template 功能比较弱,不能插入 Python 代码,要写复杂一点的逻辑需要另外用 Python 实现 Tag 或 Filter。
让人纠结的 auth 模块,Django 的 auth 跟其它模块结合紧密,功能也挺强的,就是做的有点过了,用户的数据库 schema 都给你定好了,这样问题就来了,比如很多网站要求 email 地址唯一,可 schema 里这个字段的值不是唯一的,纠结是必须的了。
如何开始
- 必要的python基础
- 官方文档:前面我们说了,Django有很好的文档系统,所以开始必须是官方文档了www.djangoproject.com/,不过是全英文的,对于英文弱鸡,只能望洋兴叹了,不过我还是建议大家尽量去看,大不了有道翻译嘛。
- 源代码:Django源码:github.com/django/djan…