The Django Book 2.0中文译本

所需积分/C币:10 2018-05-14 11:48:11 2.96MB PDF
2
收藏 收藏
举报

Django book 2.0 中文版 本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高质量的Web应用。 从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。 通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。 为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。 同时,Django 尝试留下一些方法,来让你根据需要在frame
第一章:介紹 Django connection close() 首先,用户请求CGⅠ,脚本代码打印 Content-Type行,后面跟着换行。再接下来是一些HTML的起始标签,然 后连接数据库并执行一些查询操作,获取最新的十本书。在遍历这些书的同时,生成一个书名的HTML列表 项。最后,输出HTML的结束标签并且关闭数据库连接。 像这样的一次性的动态页面,从头写起的方法并非一定不好。其中一点:这些代码简单易懂,就算是一个初起 步的开发者都能读明白这16行的 Python的代码,而且这些代码从头到尾做了什么都能了解得一清二楚。不需 要学习额外的背景知识,没有额外的代码需要去了解。同样,也易于部署这16行代码,只需要将它保存为一个 latestbooks,cgi的文件,上传到网络服务器上,通过浏览器访问即可。 尽管实现很简单,还是暴露了一些问题和不便的地方。闫你自己这几个问题: ■应用中有多处需要连接数据库会怎样呢?每个独立的CGI脚本,不应该重复写数据库连接的代码。比较实 用的办法是写一个共享函数,可被多个代码调用。 n—个开发人员磅实需要去关注如何输出 Content-Type以及完成所有操作后去关闭数据库么?此类问题 只会降低开发人员的工作效率,增加犯错误的几率。那些初始化和释放相关的工作应该交给一些通用的框 架来完成。 ■如果这样的代码被重用到—个复合的环境中会发生什么?每个页面都分别对应独立的数据库和密码吗? n如果一个Web设计师,完全没有 Python开发经验,但是又需要重新设计页面的话,又将发生什么呢? 个字符写错了,可能导致整个应用崩溃。理想的情况是,页面显示的逻辑亐从数据库中读取书本记录分隔 开,这样Web设计师的重新设计不会影响到之前的业务逻辑。 以上正是web框架致力于解决的问题。Web框架为应用程序提供了一套程序框架,这样你可以专注于编写清 晰、易维护的代码,而无需从头做起。简单来说,这就是Djaηgo所能做的。 MVC设计模式 让我们来硏究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不 同。下面就是通过使用 Django来完成以上功能的例子:首先,我们分成4个 Python的文件,( models. py, vIeWs.py,urls,py)和htm模板文件( atest books.htm1) models py (the database tables) from django db import models class Book(models Model): name models CharField(max length=50) pub date models. DateField( views py (the business logic) from django shortcuts import render to response from models import book def latest books(request) book_ list =Book, objects. order by ('-pub date)[: 10] return render to_response( latest_ books. html,t book_list: book_listj) 第一章:介紹 Django urls. py (the URL configuration) from django. conf urls. defaults import import viewS urlpatterns patterns(', (r latest/s,, views. latest books) t latest books. html (the template) <html>head<title,books</title></head> <h1>Books</hI> <U1> [ for book in book_ list % }}</11 [% endfor‰} </body></html> 然后,不用关心语法细节;只要用心感觉整体的设计。这里只关注分割后的几个文件 a models.py文件主要用一个 Python类来描述数据表。称为摸型(mode。运用这个类,你可以通过简 单的 Python的代码来创建、检索、更新、删除数据库中的记录而无需写一条又一条的SQL语句 vIews.py文件包含了页面的业务逻辑。1 atest books()函数叫做视。 uris.py指出了什么样的URL调用什么的视图。在这个例子中/ atest/URL将会调用1 atest books() 这个函数。换句话说,如果你的域名是example.com任何人浏览网址http://example.com/latest/将会 调用1 atest books()这个函数。 latest books,htm是htm模板,它描述了这个页面的设计是如何的。使用带基本逻辑声明的模板语 言,如% for book in book_1st 结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC。简单的说,MνC是·种软件开发的方 法,它把代码的定义和数据访冋的方法〔模型)与请求逻辑(控制器)还有用户接口(视图)分开来。我们将 在第5章更深入地讨论MVC。 这种设计模式关鍵的优势在于各种组件都是慭崴结合的。这样,每个由Djaηgo驱动的web应用都有着明确 的目的,并且可独立更改而不影响到其它的部分。比如,开发者更改一个应用程序中的URL而不用影响到这 个程序底层的实现。设计师可以改变HTML页面的样式而不用接触 Python代码。数据库管理员可以重新命 名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。 本书中,每个组件都有它自己的一个章节。比如,第三章涵盖了视图,第四章是模板,而第五章是模型。 Django历史 在我们讨论代码之前我们需要先了解一下 Django的历史。从上面我们注意到:我们将向你展示如何不使用捷 径来完成工作,以便能更好的理解捷径的原理同样,理解 Django产生的背景,历史有助于理解 Django的实现 方式 第一章:介紹 Django 如果你曾编写过网络应用程序。那么你很有可能熟悉之前我们的CGI例子。 从头开始编写网络应用程序 2从头编写另一个网络应用程序。 3.从第一步中总结(找出其中通用的代码),并运用在第二步中 4.重构代码使得能在第2个程序中使用第1个程序中的通用代码。 5.重复2-4步骤若干次 6.意识到你发明了一个框架 这正是为什么 Django建立的原因! Django是从真实世界的应用中成长起来的,它是由堪萨斯( Kansas)州 Lawrence城中的一个网络开发小 组编写的。它诞生于2003年秋天,那时 Lawrence urna/-Wba报纸的程序员 Adrian Holovaty和 Simon willison开始用 Python来编写程序。 当时他们的 World online小组制作并维护当地的几个新闻站点,并在以新闻界特有的快节奏开发环境中逐渐发 展。这些站点包括有凵Worldcom、Lawrence.com和KuspOrts.com,记者(或管理层)要求增加的特征 或整个程序都能在计划时间內快速的被建立,这些时间通常只有几天或几个小时。因此, Adrian和 Simon开 发了一种节省时间的网络程序开发框架,这是在截止时间前能完成程序的唯一途径。 2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个 World online的站点。当时 World Online小组中的 Jacob Kaplan-Moss决定把这个框架发布为一个开源软件。 从今往后数年, Django是一个有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。原来的 World on line的两个开发者( Adrian and jacob)仍然掌握着 Django,但是其发展方向受社区团队的影响更 大 这些历史都是相关联的,因为她们帮助解释了很重要的两点。第一, Django最可爱的地方。 Django诞生于新 闻网站的环境中,因此它提供很多了特性(如第6章会说到的管理后台),非常适合内容类的网站,如 Amazon. com, craigslist. org和 washingtonpost. com,这些网站提供动态的,数据库驱动的信息。(不要看 到这就感到沮丧,尽管 Django擅长于动态内容管理系统,但并不表示 Django主要的目的就是用来创建动态内 容的网站。某些方面*特别高效*与其他方面*不高效*是有区别的, Django在其他方面也同样高效。) 第二, Django的起源造就了它的开源社区的文化。因为 Django来自于真实世界中的代码,而不是来自于一个 科研项目或者商业产品,她主要集中力量来解决Web开发中遇到的问题,同样也是 Django的开发者经常遇到 的问题。这样, Django每天在现有的基础上进步。框架的开发者对于让开发人员节省时间,编写更加容易维 护的程序,同时保证程序运行的效率具有极大的兴趣。无他,开发者动力来源于自己的目标:节省时间,快乐 工作。(坦率地讲,他们使用了自己公司的产品。 如何阅读本书 在编写本书时,我们努力尝试在可读性和参考性间做—个平衡,当然本书会偏向于可读性。本书的目标,之前 也提过,是要将你培养成一名 Django专家,我们相信,最好的方式就是提供文章和充足的实例,而不是一堆 详尽却乏味的关于 Django特色的手册。(曾经有人说过,如果仅仅教字母表是无法教会别人说话的。 按照这种思路,我们推荐按顺序阅读第1-12章。这些章节构成了如何使用 Django的基础;读过之后,你就 可以搭建由 DJango支撑的网站了。1-7章是核心课程,8-1l讲述 DJango的高级应用,12章讲述部署相关 第一章:介紹 的知识。剩下的13-20章,讲述 Django特有的特点,可以任意顺序阅读 附录部分用作参考资料。要回忆语法或査阅 Django某部分的功能概要时,你偶尔可能会回来翻翻这些资料以 及http://www.djangoproject.com/上的免费文档 所需编程知识 本书读者需要理解基本的面向过程和面向对象编程:流程控制(if,whie和for),数据结构(列表,哈 希表/字典),变量,类和对象 Web开发经验,正如你所想的,也是非常有帮助的,但是对于阅读本书,并不是必须的。通过本书,我们尽量 给缺乏经验的开发人员提供在Web开发中最好的实践 Python所需知识 本质上来说, Django只不过是用 Python编写的一组类库。用 Django开发站点就是使用这些类库编写 Python代码。因此,学习 Django的关犍就是学习如何进行 Python编程并理解 Django类库的运作方式。 如果你有 Python开发经验,在学习过程中应该不会有任何问题。基本上 Django的代码并没有使用一些黑色 魔法(例如代码中的欺骗行为,某个实现解释或者理解起来十分困难)。对你来说,学习 Djang就是学习她 的命名规则和API。 1 如果你没有使用 Python编程的经验,你一定会学到很多东西。它是非常易学易用的。虽然这本书没有包括一 个完整的 Python教程,但也算是一个怡当的介绍了 Python特征和功能的集锦。当然,我们推荐你读一下官 方的 Python教程,它可以从htp;/ docs. python。org/tut/在线获得。另外我们也推荐 Mark Pilgrims的书 DiveIntoPython(http://www.diveintopython.org/) Django版本支持 此书内容对 Django1.1兼容 Django的开发者保证主要版本号向后兼容。这意味着,你用 Django1写的应用,可以用于1.2,1.3,1.9等 所有以1开头的版本 如果 Django到了20,你的应用可能不再兼容,需要重写,但是,2.0是很遥远的事情。对此,可以参考一下 10的开发周期,整整3年的时间。(这与 Python语言的茉容策略非常像:在 python20下写的代码可以在 python2.6下运行,但不一定能在 python30下运行 所以,此书覆盖1.版本,可以使用很长时间。 获取帮助 Django的最大的益处是有一群乐于助人的人在 Django社区上。你可以毫无约束的提各种问题在上面 如 django的安装app设计db设计发布 Django邮件列表是很多 Django用户提岀问题、回答问题的地方。可以通 过http://www.djangoproject.com/r/django-users来免费注册。 如果 Django用户遇到棘手的问题希望得到及时地回复,可以使用 Django IRC channel。在 EFreenode IRC network加入并 django 5/6 第一章:介紹 Django 下一章 在下—章,我们将开始使用 Django,内容将包括安裝和初始化配置 目录|下一章|翻译 Copyright 2006 Adrian Holovaty and Jacob Kaplan-Moss. This work is licensed under the gnu free document license Hosting gra ciously provided by(nt Chinese translate hosting by py3kcn 6/6 第二章入门 AboutiCommenthelpContactusErrataIBuytheprintversiononAmazon.com The Django Book 上一章|目录|下一章|翻译 第二章:入门 由于现代Web开发环境由多个部件组成,安装 Django需要几个步骤。这一章,我们将演示如何安装框架以及 些依赖关系 1 因为 Django就是纯 Python代码,它可以运行在任何 Python可以运行的环境,甚至是手机上!但是这章只提及 Django安装的通用脚本。我们假设你把它安装在桌面笔记本电脑或服务器 往后,在第12章,我们将讨论如何部署 Django到一个生产站点。 Python安装 Django本身是纯 Python编写的,所以安装框架的第一步是确保你已经安装了 Python Python版本 核心 Django框架可以工作在2.3至26(包括2.3和26)之间的任何 Python版本。 Django的可选GIS(地理信 息系统)支持需要 Python24到26。 如果你不确定要安装 Python的什么版本,并且你完全拿不定主意的话那就选2×系列的最新版本吧。版本26 虽然 Django在2.3至26版之间的任意 Python版本下都一样运行得很好,但是新版本的 Python提供了一些你可 能比较想应用在你的程序里的,更加丰富和额外的语言特性。另外,某些你可能要用到的 Django第三方插件 会要求比 Python23更新的版本,所以使用比较新的 Python版本会让你有更多选择。 Django和 Python3.0 在写作本书的时候, Python3.O已经发布,但 Djang暂时还不支持。 Python3.0这个语言本身引入了大量不向 后兼容的改变,因此,我们预期大多数主要的 Python库和框架将花几年才能衔接,包括 Django。 如果你是个 Python新手并且正迷茫于到底是学习 Python2X还是 Python3x的话,我们建议你选择 Python 2X 安装 如果使用的是 Linux或 Mac osⅩ,系统可能已经预装了 Python。在命令提示符下(或OSⅩ的终端中)输入 python,如果看到如下信息,说明 Python已经装好了:在命令行窗口中输入 python(或是在OS×的程序/ 具/终端中)。如果你看到这样的信息说明 python已经安装好了 Python2.4.1(#2,Nar312005,0:85:10) [GCC 3. 3 20030304(Apple Computer, Inc. build 1666)] on darwin Type help",copyright ,credits"or " license for more information 否则,你需要下载并安装Python它既快速又方便,而详细说明可参考http://www.python.org/download 安装 Django 任何时候,都有两个不同版本的 Django供您选择。最新的官方发行版和有风险的主干版本。安装的版本取决 1/8 第二章入门 于您的优先选择。你需要一个稳定的通过测试的 Django,或是你想要包括最新功能的版本,也许你可对 Django本身作贡献,而把稳定作为代价? 我们推荐选定一个正式发布版本,但重要的是了解到主干开发版本的存在,因为在文档和社区成员中你会发现 它被提到。 安装官方发布版 官方发布的版本带有一个版本号,例如1.0.3或1.1,而最新版本总是可以 在http://www.djangoproject.com/download/找到。 如果您在用 lLinux系统,其中包括 Django的包,使用默认的版本是个好主意。这样,你将会通过系统的包管理 得到安全的升级。 如果你的系统没有自带 Django,你可以自己下载然后安装框架。首先,下载名字类似 于 Django-1.0.2-fina1.tar.gz压缩文件。(下载到哪里无所谓,安裝程序会把 Django文件放到正确的地方。 )解压缩之后运行 setup. py insta11,像操作大多数 Python库一样。 以下是如何在∪nⅸ系统上安装的方法 1. tar xzvf Django-*. tar. gz 2. cd django-*。 3. sudo python setup. py install Windows系统上,推荐使用7-zip(htp:/www.djangoproject.com//7zip来解压缩tar,gz文件。解压缩 完成后,以管理员权限启动一个 DOS She(命令提示符),然后在名字以」ango-开始的目录里执行如下命 令 python setup. py install 如果你很好奇: Django将被安裝到你的 Python安装目录¨的site- package¨`目录( Python从该目录寻找第三 方库)。通常情况下,这个目录在/usr/1ib/ python2.4/site- packages 安装 Trunk版本 最新最好的 django的开发版本称为 trunk可以从 django的 subversion处获得。如果你想尝鲜,或者想为 django贡献代码,那么你应当安装这个版本。 Subversion是一种与CS类似的免费开源版本控制系统, Django开发团队使用它管理 Django代码库的更 新。你可以使用 Subversion客户端获取最新的 Django源代码,并可任何时候使用/oca/ checkout更新本 地 Django代码的版本,以获取 Django开发者所做的最近更新和改进, 请记住,即使是使用 trunk版本,也是有保障的。因为很多 django的开发者在正式网站上就是用的runk版 本,他们会保证tunk版本的稳定性。 遵循以下步骤以获取最新的 Django主流代码 确保安装了 客户端。可以从 免费下载该软件,并从 获取出色的文档。 (如果你在使用 或者更新的版本,你很走运, 应该就可以安装。你可以在 终端上输入svn-- version来验证。 2/8 第二章入门 使用svncohttp://code.djangoproject.com/svn/django/trunkdjtrunk命令查看主体代码。 找到你的的 目录。一般为 ,如果你不确定,可以输 入如下命令: python -c 'import sys, print, pprintpprint(sys. path) 上面的结果会包含 的日录 在 目录下,创建一个文件 编辑这个文件,包含 目录的仝路径利润,此文件包含如下行: /home/me/code/ditrunk 将 ditrun k/ django/bin加入系统变量PATH中。该目录中包含一些像 django- admin. py之类的管理工 具。此目录包含管理工具,例如: django- admin. py 提示 如果之前没有接触过.pth文件,你可以从htp//www.djangoproject.com/r/python/site-module/中获取 更多相关知识。 从 Subversion完成下载并执行了前述步骤后,就没有必要再执行 python setup, py instal1了,你刚才已经 手动完成了安装 由于 Django主干代码的更新经常包括bug修正和特性添加,如果真的着迷的话,你可能每隔一小段时间就想 更新一次。在 drunk目录下运行 svn update命令即可进行更新。当你使用这个命令时, Subversion会联络 http://code.djangoproject.com判断代码是否有更新,然后把上次更新以来的所有变动应用到本地代码。 就这么简单。 最后,如果你使用 trunk,你要知道使用的是哪个 trunk版本。如果你去社区寻求帮助,或是为 Django框架提 供改进,知道你使用的版本号是非常重要的。因此,当你到社区去求助,或者为 django提供改进意见的时 候,请时刻记住说明你正在使用的 django的版本号。如何知道你正在使用的 django的版本号呢?进入 trunk目录,然后键入 syn info,在输出信息中査看 Revision:(版本)后跟的数字。 Djang。在每次更新 后,版本号都是递增的,无论是修复Buq、增加特性、改进文档或者是其他。在一些 Django社区中,版本号 甚至成为了一种荣誉的象征,我从[写上非常低的版本号]开始就已经使用 Dano了 测试 Django安装 让我们花点时间去测试 Django是否安装成功,并工作良好。同时也可以了解到一些明确的安装后的反馈信 息。在She中,更换到另外一个目录(不是包含 Django的目录),然后输入 python来打开 Python的交互解释 器。如果安装成功,你应该可以导入 django模块了 >>>import django >> django VERSION (1,1,日, final',1) 交互解释器示例 Python交互解释器是命令行窗口的程序,通过它可以交互式地编写 Python程序。要启动它只需运行 python 命令。 3/8

...展开详情
试读 127P The Django Book 2.0中文译本
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
    最新推荐
    The Django Book 2.0中文译本 10积分/C币 立即下载
    1/127
    The Django Book 2.0中文译本第1页
    The Django Book 2.0中文译本第2页
    The Django Book 2.0中文译本第3页
    The Django Book 2.0中文译本第4页
    The Django Book 2.0中文译本第5页
    The Django Book 2.0中文译本第6页
    The Django Book 2.0中文译本第7页
    The Django Book 2.0中文译本第8页
    The Django Book 2.0中文译本第9页
    The Django Book 2.0中文译本第10页
    The Django Book 2.0中文译本第11页
    The Django Book 2.0中文译本第12页
    The Django Book 2.0中文译本第13页
    The Django Book 2.0中文译本第14页
    The Django Book 2.0中文译本第15页
    The Django Book 2.0中文译本第16页
    The Django Book 2.0中文译本第17页
    The Django Book 2.0中文译本第18页
    The Django Book 2.0中文译本第19页
    The Django Book 2.0中文译本第20页

    试读结束, 可继续阅读

    10积分/C币 立即下载 >