Monday, December 01, 2008

用Django进行Web开发




用Django进行Web开发


第一章 Django介绍




在开始我们的Django介绍之前我们先来谈谈什么是Dijango.简单的将Django是一个开源的Web框架,利用它你可以高效的完成功能丰富的web应用程序,我说的高兴是花更少的时间和精力(包括学习的难度)。Django使用Python语言开发,Python是一个广泛应用的开发语言它非常适于编写web应用程序。Django提供了一个松耦合的MVC框架,通过它你可以写出干净的易于维护的web应用程序。在今天的介绍文章中我们将学习:

  • Web应用程序中的MVC模式
  • 为什么我们要使用Python
  • 为什么我们要使用Django
  • Django的历史



Web应用程序的中MVC模式




Web一样程序在过去的几年里得到了长足的发展. 开始的时候人们使用CGI的方式编写Web服务器端的程序。CGI使用C语言中的标准I/O库来完成输入内容的解析并返回输出结果,这种方式的缺点是CGI对于每一个请求输入都要一个单独的程序来完成,以至于很快服务器资源就耗尽了。之后脚本语言被引入到web开发中,它确实帮助开发人员完成很多以前无法做到的事情。比如利用Perl和PHP开发人员可以很快的开发web应用程序,一些通用的操作比如cookie和seesion的处理都被很好的封装起来,编写相关程序也变得非常简单了。尽管脚本语言提供了很多有用的函数库来应对日常的开发,但问题是缺乏统一的标准,不同的脚步语言在设计、使用和约定方面都不相同。因此人们意识到需要一个统一规范的框架结构。

几年前,人们提出了,模型-视图-控制器(MVC)的设计模式。这种设计模式提出将:数据模型(model),用户视图(view)和数据控制逻辑(controller)分开的设计理念,这样更改其中任何一个层面的内容都不会影响到其他的部分。好处是显而易见的,通过这种方式页面设计人员可以只考虑用户页面的问题而不要考虑如何存储和控制页面后面的数据。结果MVC模式被大家广泛的接受并且很快推广到其他的技术应用中。下图列示了MVC模式是如何相互协作来处理用户请求的。




为什么我们要使用Python




Python语言被广泛应用,在各个领域你都可以看到它,Python同样非常适于开发web应用程序。Python的语法非常清晰而优雅并且有一大堆标准库提供了从多线程到文件压缩几乎方方面面的支持。而且Python语言提供的面向对象功能非常适于实现MVC结构。如果你开发过软件项目你会发现越到项目的后期性能问题越位突出,而Python稳定高效的运行时环境为我们提供了强有力的支持,而且Python支持广泛的应用服务器,比如著名的Apache,Python几乎支持所有组要的操作系统平台和数据库服务器,当然在Django中你不必直接编写访问数据库的接口程序,Django提供了统一的封装,使用起来非常方便,在后面我们会逐步介绍。

Python是一个免费软件,你可以在http://python.org/ 下载它,而且Python的协议允许你免费的分发你的Python应用程序,这意味着你可以获得Python的源代码,自己增加你想要的功能或者更改其中的错误。目前Python拥有广泛而活跃的开发社区支持。

Python非常易于学习,在许多大学中它都是学习编程语言的首选。这本书假设你已经具备了必要的Python语言知识,不过对于一些Python的高级特性我们还是给予了一定的解释,如果你想进一步学习Python,强烈建议你阅读Python的官方指南:http://python.org/doc/

简单的总结一下Python语言:

  • 清晰优雅的语法
  • 覆盖方方面面的庞大的标准函数库
  • 丰富的文档
  • 稳定的运行时环境
  • 支持标准的平台,比如Linux和Apache




为什么我们要使用Django

随着MVC模式的广泛应用,基于Python的web框架也有很多,比如Django,TurboGears 和Zope。尽管在众多的Web框架中选择一个合适的比较麻烦,但是存在多个web框架可以在它们之间形成竞争,这对技术的发展是有好处的。

Django是Python web框架之一,所以现在的问题是我们为什么要在这里单独谈“为什么要使用Django”,以及它为什么会在Python社区中如此流行,下面的内容讨论了这个主题。

组件之间的紧密集成

首选Django提供了一套紧密集成的组件,这些都是由Django开发小组自己创建的。Django最初被开发用于内部使用的web架构,他用于管理一些列新闻发布站点,之后Django小组把他们的开发成功发布于网络并开放了源代码。因此,Django组件被设计为可继承的、可重用的。


对象关系映射

Django的ORM(对象-关系映射)组件提供了对象模型到关系数据库之间的映射功能。Django支持大多数数据库引擎,而且你的应用程序要在不同的数据库之间切换只需要修改一下配置文件就可以了。所以当我们想将应用程序移植到另一个数据库时,这确实给开发人员提供了很大的便利。

清晰的URL设计

Django中的URL系统设计的非常方便而强大,你可以在URL中定义一种模式,然后再定义你的函数还操控这个模式。这可以让开发人员设计出对于用户和搜索引擎都很友好的URL格式。

内置的管理接口

Django还内置了一个灵活而高效的管理接口,你可以通过它方便的查看或操作数据。而且这个管理接口也是可以定制的。

强大的开发环境

另外,Django还提供了非常强大的开发环境,你可以在开发的时候只使用一个轻量级的web服务器。如果你打开调试模式,Django会给出详细的调试信息,这意味着如果程序出现错误,那么查找错误并修复它们将变得非常容易。

多语言支持

Django通过内置的i18n系统提供了出色的多语言支持。这对于需要提供国际化支持的应用程序非常有用。这个系统使页面在不同语言之间的转换变得非常简单。


Django提供的标准功能如下:

  • 一个基于模板和文本过滤的引擎,它非常简单但扩展性很强
  • 一套表单输出和验证API
  • 一套可扩展的权限管理系统
  • 为了提高性能的缓存系统
  • RSS系统

尽管Django没有提供内建的对JavaScript的支持,一边编写Ajax程序,但是在我们后面的讲解中你会看到在Django中集成Ajax是非常简单的。

所以简单的总结一下,Django提供了一套可集成化的、稳定的组件,并且你可以在它的网站上找到详细的文档:http://www.djangoproject.com/documentation/ ,这真要感谢Django社区的这些开发人员和用户。

Django的历史

Django起始于2003年Lawrence Journal-World 报社的一个内部系统。那是开发人员经常不得不为了增加新的功能而进行大量的开发,而且时间还很紧迫。因此Django被设计开发来适应新闻出版业的快速变化。在2005年的夏天,Django已经足够稳定来管理多个站点,所以开发人员认为应该把这个系统发布到网上并开发它的源代码,他们用一个爵士乐手Django Reinhardt.的名字来命名这个项目。

现在Django成为了一个聚集了世界各地开发人员和用户的开源系统,这意味着Django的bug修改和更新的速度很快,你可以及时的获得支持。

总结

最近几年来Web技术得到了突飞猛进的发展。脚本语言、web框架和Ajax技术的应用使得web开发变得更加快速而高效。后面的章节中将一步步介绍如何使用Python和Django技术创建web应用程序,我们将创建一个可以在用户之间共享书签的应用,许多web2.0技术也将应用到我们的程序中。在下一章的开始我们将介绍如何安装Django并创建第一个简单的Django应用程序。





No comments: