第一章 Django之web框架(1)

Django 是新一代 Web 框架 中很是出色的成员。那么 Web 框架这个术语的确切含义究竟是 什么呢?html


  要回答这个问题,让咱们来看看经过编写标准的 CGI 程序来开发 Web 应用,这在大约1998年的时候很是流行。编写 CGI Web 应用时,你须要本身处理全部的操做,就像你想烤面包,可是都须要本身生火同样。下面是实例,一个简单的 CGI 脚本,用 Python 写的,读取数据库并显示最新发布的十本书。python

 1 #!/usr/bin/python 
 2  
 3 import MySQLdb 
 4  
 5 print "Content-Type: text/html" 
 6 print "<html><head><title>Books</title></head>" 
 7 print "<body>" 
 8 print "<h1>Books</h1>" 
 9 print "<ul>" 
10  
11 connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') 
12 cursor = connection.cursor() 
13 cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10") 
14 for row in cursor.fetchall():     
15     print "<li>%s</li>" % row[0] 
16  
17 print "</ul>" 
18 print "</body></html>" 
19  
20 connection.close() 

 

代码十分简单。首先,根据 CGI 的要求输出一行 Content-Type,接下来是一个空行。再接下来是一些 HTML 的起始标签,而后链接数据库并执行一些查询操做,获取最新的十本书。遍历这些书,同时生成一个 HTML 的无序序列。最后,输出 HTML 的结束标签而且关闭数据库链接。
  像这样的一次性的动态页面,从头写起的方法并不是必定很差。其中一点:这些代码简单易懂,就算是一个初起步的 开发者都能读明白这16行的 Python 代码,并且这些代码从头至尾作了什么都能了解得一清二楚。不须要学习额外的背景知识,没有额外的代码须要去了解。一样,也易于部署这16行代码,只须要将它保存为一个 latestbooks.cgi 的文件,上传到 Web 服务器上,经过浏览器访问便可。
  可是,一个 Web 应用要远复杂于以上状况,这种方法很快会失效,并且你将会要面对不少问 题: 数据库

  • 当多个动态页面须要同时链接数据库时,将会发生什么?固然,链接数据库的代码不该该同时存在于各个独立的 CGI 脚本中,因此最踏实的作法是把这些代码从新组织到一个公共函数里面。
  • 一个开发人员确实须要去关注如何输出 Content-Type 以及完成全部操做后去关闭数据库么?此类问题只会下降开发人员的工做效率,增长犯错误的概率。那些初始化和释放相关的工做应该交给一些通用的框架来完成。
  • 若是这样的代码被重用到一个复合的环境中会发生什么?每一个页面都分别对应独立的数据库和密码吗?从这点看来,就须要一些环境相关的配置文件。
  • 若是一个 Web 设计师,彻底没有 Python 开发经验,可是又须要从新设计页面的话,又将发生什么呢?理想的状况是,页面显示的逻辑与从数据库中读取书本记录分隔开,这样 Web 设计师的从新设计不会影响到以前的业务逻辑。

  以上正是 Web 框架致力于解决的问题。Web 框架为应用程序提供了一套程序框架,这样你能够专一于编写清晰、易维护的代码,而无需从头作起。简单来讲,这就是 Django 所能作的。django

 

原文:《The Django Book》 http://djangobook.py3k.cn/浏览器

相关文章
相关标签/搜索