• Python Web框架(Django)的必要性

    为什么要用 Web 框架?
    服务器君一共花费 7.948 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    Django 在新一代的 Web 框架中非常出色,为什么这么说呢?

    为回答该问题,让我们考虑一下不使用框架设计 Python 网页应用程序的情形。 贯穿整个系列,我们会多次展示不使用框架实现网站基本功能的方法,让读者认识到框架开发的方便。

    • 不使用框架,更多情况是没有合适的框架可用。 最重要的是,理解实现的来龙去脉会使你成为一个优秀的web开发者。

    使用Python开发Web,最简单,原始和直接的办法是使用CGI标准,在1998年这种方式很流行。 现在从应用角度解释它是如何工作: 首先做一个Python脚本,输出HTML代码,然后保存成.cgi扩展名的文件,通过浏览器访问此文件。大概就是这样。

    如下示例,用Python CGI脚本显示数据库中最新出版的10本书: 不用关心语法细节;仅仅感觉一下基本实现的方法:

    #!/usr/bin/env python
    
    import MySQLdb
    
    print "Content-Type: text/html\n"
    print "<html><head><title>Books</title></head>"
    print "<body>"
    print "<h1>Books</h1>"
    print "<ul>"
    
    connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
    cursor = connection.cursor()
    cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
    
    for row in cursor.fetchall():
        print "<li>%s</li>" % row[0]
    
    print "</ul>"
    print "</body></html>"
    
    connection.close()
    

    首先,用户请求CGI,脚本代码打印Content-Type行,后面跟着换行。再接下来是一些HTML的起始标签,然后连接数据库并执行一些查询操作,获取最新的十本书。在遍历这些书的同时,生成一个书名的HTML列表项。 最后,输出HTML的结束标签并且关闭数据库连接。

    像这样的一次性的动态页面,从头写起的方法并非一定不好。其中一点:这些代码简单易懂,就算是一个初起步的开发者都能读明白这16行的Python的代码,而且这些代码从头到尾做了什么都能了解得一清二楚。不需要学习额外的背景知识,没有额外的代码需要去了解。同样,也易于部署这16行代码,只需要将它保存为一个 latestbooks.cgi 的 文件,上传到网络服务器上,通过浏览器访问即可。

    尽管实现很简单,还是暴露了一些问题和不便的地方。问你自己这几个问题:

    1. 应用中有多处需要连接数据库会怎样呢? 每个独立的CGI脚本,不应该重复写数据库连接的代码。 比较实用的办法是写一个共享函数,可被多个代码调用。
    2. 一个开发人员 确实 需要去关注如何输出Content-Type以及完成所有操作后去关闭数据 库么? 此类问题只会降低开发人员的工作效率,增加犯错误的几率。 那些初始化和释放 相关的工作应该交给一些通用的框架来完成。
    3. 如果这样的代码被重用到一个复合的环境中会发生什么?每个页面都分别对应独立的数据库和密码吗?
    4. 如果一个Web设计师,完全没有Python开发经验,但是又需要重新设计页面的话,又将 发生什么呢? 一个字符写错了,可能导致整个应用崩溃。 理想的情况是,页面显示的逻辑与从数据库中读取书本记录分隔开,这样 Web设计师的重新设计不会影响到之前的业务逻辑。

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

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [PHP程序设计] 对输入文件类型的检测 1 个条目
  2. [PHP程序设计] PHP扩展模块安装 1 个条目
  3. [计算机算法] TAOCP与算法 12 个条目
  4. [Python程序设计] Django数据库模型 6 个条目
  5. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  6. [C语言程序设计] 结构体基本知识 1 个条目
  7. [PHP程序设计] 命令式编程范式 6 个条目
  8. [移动开发] Android开发基础知识 4 个条目
  9. [移动开发] Android 网络通信框架Volley 1 个条目
  10. [移动开发] 简单了解Android Fragment 3 个条目
  11. [移动开发] Android布局中的一些常用控件 2 个条目
  12. [计算机算法] 两数交换的各种算法细节 2 个条目
窗口 -- [资讯]