新書推薦:
《
量子网络的构建与应用
》
售價:NT$
500.0
《
拍电影的热知识:126部影片里的创作技巧(全彩插图版)
》
售價:NT$
500.0
《
大唐名城:长安风华冠天下
》
售價:NT$
398.0
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:NT$
403.0
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:NT$
1100.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:NT$
435.0
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:NT$
1573.0
《
大国脊梁:漫画版
》
售價:NT$
374.0
|
編輯推薦: |
★ 一本书掌握Python基础及高效实践方法
★ 全新Python框架版本的应用实践指南
★ 作者多年Python项目实践经验倾囊分享
★ 中小示例、项目案例,一个都不能少
★ 提高开发效率,学得懂、练得会
|
內容簡介: |
也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、前端界面设计,在学术研究或工程项目上能独当一面。通过对Python及其周边Web框架的学习和实践,你就可以成为这样的全能型人才。本书分为3部分:第1部分是基础篇,带领初学者实践Python开发环境和掌握基本语法,同时对网络协议、Web客户端技术、数据库建模编程等网络编程基础深入浅出地进行学习;第2部分是框架篇,学习当前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,达到对各种Python网络技术融会贯通的目的;第3部分是实战篇,分别对4种框架进行项目实践,利用其各自的特点开发适用于不同场景的网络程序。本书内容精练、重点突出、实例丰富、讲解通俗,是广大网络应用设计和开发人员不可多得的一本参考书,同时非常适合大中专院校师生学习和阅读,也可作为高等院校计算机及相关培训机构的教材。
|
關於作者: |
复旦大学信息管理学士学位、上海交通大学计算机技术硕士学位,从事计算机软件研发十余年。对应用软件开发有较广泛深入了解,用C、Python等技术主持负责过电信级实时计费系统、客户管理系统、智能家居、物联网云平台的研究和设计开发工作。在不写作的时候,业余时间喜欢跑步和游泳。
|
目錄:
|
第1篇打好Python基础
第1章Python基础知识2
1.1Python综述3
1.1.1了解Python的特性及版本3
1.1.2安装Python5
1.1.3使用Python原生编辑器7
1.1.4使用Eclipse开发环境9
1.1.5Python编程入门解决斐波那契数列问题14
1.2数据类型16
1.2.1Number类型17
1.2.2Sequence类型簇20
1.2.3String类型22
1.2.4Tuple类型28
1.2.5List类型29
1.2.6Set类型30
1.2.7Dictionary类型33
1.3流程控制35
1.3.1程序块与作用域35
1.3.2判断语句36
1.3.3循环语句38
1.3.4语句嵌套41
1.4函数42
1.4.1定义与使用42
1.4.2变长参数44
1.4.3匿名函数46
1.5异常48
1.5.1处理异常48
1.5.2自定义异常50
1.6面向对象编程51
1.6.1什么是面向对象52
1.6.2类和对象53
1.6.3继承61
1.7本章总结64
第2章Web编程之网络基础65
2.1TCPIP网络66
2.1.1计算机网络综述66
2.1.2TCP和UDP70
2.1.3CS及BS架构73
2.2HTTP74
2.2.1HTTP流程75
2.2.2HTTP消息结构76
2.2.3HTTP请求方法80
2.2.4基于HTTP的网站开发80
2.3Socket编程82
2.3.1Socket基础82
2.3.2实战演练:Socket TCP原语83
2.3.3实战演练:Socket UDP原语87
2.4本章总结88
第3章客户端的编程技术89
3.1HTML90
3.1.1HTML介绍90
3.1.2HTML基本标签93
3.1.3HTML表单99
3.2CSS102
3.2.1样式声明方式103
3.2.2CSS语法104
3.2.3基于CSS DIV的页面布局106
3.3JavaScript108
3.3.1在HTML中嵌入JavaScript108
3.3.2JavaScript的基本语法109
3.3.3DOM及其读写115
3.3.4window对象118
3.3.5HTML事件处理121
3.4jQuery124
3.4.1使用jQuery124
3.4.2选择器125
3.4.3行为126
3.5本章总结130
第4章数据库及ORM131
4.1数据库概念131
4.1.1Web开发中的数据库132
4.1.2关系数据库建模134
4.2关系数据库编程137
4.2.1常用SQL语句137
4.2.2实战演练:在Python中应用SQL143
4.3ORM编程145
4.3.1ORM理论基础145
4.3.2Python ORM库介绍147
4.3.3实战演练:Peewee库编程148
4.4本章总结151
第2篇详解主流Python Web框架
第5章Python网络框架纵览154
5.1网络框架综述155
5.1.1网络框架及MVC架构155
5.1.24种Python网络框架:Django、Tornado、Flask、Twisted156
5.2开发环境准备157
5.2.1使用Python虚环境157
5.2.2Windows环境下的安装159
5.2.3Linux环境下的安装162
5.2.4easy_install与pip的使用163
5.3Web服务器165
5.3.1实战演练1:WSGI接口165
5.3.2实战演练2:Linux Nginx uWSGI配置166
5.3.3实战演练3:建立安全的HTTPS网站172
5.4本章总结174
第6章企业级开发框架Django175
6.1Django综述176
6.1.1Django的特点及结构176
6.1.2安装Django177
6.2实战演练:开发Django站点177
6.2.1建立项目177
6.2.2建立应用178
6.2.3基本视图179
6.2.4内置Web服务器181
6.2.5模型类182
6.2.6表单视图185
6.2.7使用管理界面188
6.3Django模型层190
6.3.1基本操作190
6.3.2关系操作198
6.3.3面向对象ORM202
6.4Django视图层205
6.4.1URL映射205
6.4.2视图函数211
6.4.3模板语法213
6.5使用Django表单218
6.5.1表单绑定状态219
6.5.2表单数据验证219
6.5.3检查变更字段222
6.6个性化管理员站点222
6.6.1模型222
6.6.2模板225
6.6.3站点227
6.7本章总结229
第7章高并发处理框架Tornado230
7.1Tornado概述231
7.1.1Tornado介绍231
7.1.2安装Tornado232
7.2异步及协程基础232
7.2.1同步与异步IO233
7.2.2Python关键字yield234
7.2.3协程236
7.3实战演练:开发Tornado网站239
7.3.1网站结构240
7.3.2路由解析241
7.3.3RequestHandler242
7.3.4异步化及协程化248
7.4用户身份验证框架250
7.4.1安全Cookie机制250
7.4.2用户身份认证252
7.4.3防止跨站攻击254
7.5HTML5 WebSocket概念及应用256
7.5.1WebSocket概念256
7.5.2服务端编程259
7.5.3客户端编程261
7.6Tornado网站部署263
7.6.1调试模式264
7.6.2静态文件265
7.6.3运营期配置267
7.7本章总结269
第8章支持快速建站的框架Flask270
8.1Flask综述271
8.1.1Flask的特点271
8.1.2在Windows中的安装272
8.1.3在Linux及Mac中的安装274
8.2实战演练:开发Flask站点276
8.2.1Hello World程序276
8.2.2模板渲染278
8.2.3重定向和错误处理280
8.3路由详解281
8.3.1带变量的路由281
8.3.2HTTP方法绑定283
8.3.3路由地址反向生成284
8.4使用Context上下文285
8.4.1会话上下文286
8.4.2应用全局对象287
8.4.3请求上下文289
8.4.4回调接入点291
8.5Jinja2模板编程292
8.5.1Jinja2语法293
8.5.2使用过滤器294
8.5.3流程控制297
8.5.4模板继承300
8.6SQLAlchemy数据库编程303
8.6.1SQLAlchemy入门303
8.6.2主流数据库的连接方式307
8.6.3查询条件设置308
8.6.4关系操作311
8.6.5级联315
8.7WTForm表单编程321
8.7.1定义表单321
8.7.2显示表单322
8.7.3获取表单数据324
8.8本章总结326
第9章底层自定义协议网络框架Twisted327
9.1Twisted综述328
9.1.1框架概况328
9.1.2安装Twisted及周边组件328
9.2实战演练:开发TCP广播系统330
9.2.1广播服务器330
9.2.2广播客户端332
9.3UDP编程技术335
9.3.1实战演练1:普通UDP335
9.3.2实战演练2:Connected UDP338
9.3.3实战演练3:组播技术340
9.4Twisted高级话题341
9.4.1延迟调用341
9.4.2使用多线程347
9.4.3安全信道349
9.5本章总结352
第3篇实战项目
第10章实战1:用Django PostgreSQL开发移动Twitter354
10.1项目概览355
10.1.1项目来源(GitHub)355
10.1.2安装PostgreSQL数据库并配置Python环境356
10.1.3项目结构358
10.2页面框架设计360
10.2.1基模板文件360
10.2.2手机大小自适应(jQuery技术)363
10.2.3文本国际化364
10.2.4网站页面一览367
10.3用户注册及登录368
10.3.1页面设计368
10.3.2模型层370
10.3.3视图设计371
10.4手机消息的发布和浏览376
10.4.1页面设计376
10.4.2模型层381
10.4.3视图设计382
10.5社交朋友圈385
10.5.1页面设计385
10.5.2模型层387
10.5.3视图设计388
10.6个人资料配置392
10.6.1页面设计392
10.6.2图片上传(第三方库PIL)394
10.7Web管理站点397
10.7.1定义可管理对象397
10.7.2配置管理员398
10.7.3使用管理站点398
10.8本章总结400
第11章实战2:用Tornado jQuery开发WebSocket聊天室401
11.1聊天室概览402
11.1.1项目介绍402
11.1.2安装和代码结构403
11.2消息通信404
11.2.1建立网站404
11.2.2WebSocket服务器407
11.2.3WebSocket客户端408
11.3聊天功能411
11.3.1昵称411
11.3.2消息来源413
11.3.3历史消息缓存415
11.4用户面板416
11.4.1用CSS定义用户列表416
11.4.2服务器通知418
11.4.3响应服务器动态通知(jQuery动态编程)419
11.5本章总结420
第12章实战3:用Flask Bootstrap Restful开发学校管理系统421
12.1系统概览422
12.1.1来源及功能422
12.1.2项目安装423
12.1.3代码结构425
12.2数据模型设计427
12.2.1E-R图设计427
12.2.2SQLAlchemy建模429
12.3响应式页面框架设计435
12.3.1基模板组件引用435
12.3.2响应式导航439
12.4新建学校441
12.4.1WTForm表单441
12.4.2视图及文件上传443
12.4.3响应式布局445
12.5学校管理447
12.5.1查询视图447
12.5.2分页模板450
12.6Restful接口453
12.6.1Restful概念453
12.6.2Restless插件454
12.6.3开发Restful接口457
12.7本章总结461
第13章实战4:用Twisted SQLAlchemy ZeroMQ开发跨平台物联网消息网关463
13.1项目概况464
13.1.1功能定义464
13.1.2安装和测试465
13.1.3项目结构468
13.2项目设计469
13.2.1SQLAlchmey建模469
13.2.2TCP接口设计474
13.3通信引擎476
13.3.1跨平台安全端口477
13.3.2管理连接478
13.3.3收发数据479
13.3.4TCP流式分包482
13.3.5异步执行484
13.4协议编程486
13.4.1执行命令486
13.4.2struct解析字节流489
13.4.3序列号生成490
13.4.4连接保持491
13.4.5发送Response492
13.4.6错误机制494
13.5ZeroMQ集群496
|
內容試閱:
|
有些人想学Python,却不知如何下手;有些人已经学会Python的基本语法,却不知如何使用Python进行网站设计和开发;有些人实践过个别Python网络框架,却因为Python框架过多而无法融会贯通:本书就是为他们准备的一本指南。正所谓知识来源于实践,本书严格遵守这一原则,对每个知识点都进行了示例分析,并在第3篇精选了4个不同应用场景的网络项目,帮助读者真正掌握和运用Python及其周边框架。
为什么要读这本书
如果你不知道本书能否帮到你,或者你不知道是否要选择本书,那么请先想想在平时的学习或工作中是否遇到过这些问题:
?有一个很好的设计网站的想法,想用Python实现却无从着手;
?刚学习了编程语言的if、for、while等各种语法,却不知道利用编程语言到底能做些什么;
?精通C、C等后台编程语言,却跟不上互联网蓬勃发展的新技术;
?学了美工画图、网页设计,却不懂数据库和网站搭建;
?觉得Django、Tornado、Flask、Twisted这些框架的在线资料过于晦涩难懂;
?知道各种Python Web框架,却不知道自己的项目适合哪一种;
?学过W3CSchool中的Python课程,却不知道如何使用框架提高开发效率;
?会开发网站程序,却不知道如何集成Nginx等Web服务器;
?听说过SSL,让自己的网站支持HTTPSSSL却力不从心;
?学过网络编程,却还是不知道IPv6和IPv4的区别;
?会网络数据库开发,却分不清楚PostgreSQL、SQLite、Oracle、MySQL、SQL Server的区别;
?纠结于高网络流量时使用什么框架开发网站最好。
如果这其中有些是你正在困惑的地方,那么本书也许能帮到你;如果通过学习本书能帮你解决实际问题,那么笔者也就实现了写作本书的目标。
本书的编写特点
1.零基础要求
在学习本书之前不需要具备任何计算机专业背景,任何有志于Python及Web站点设计的读者都能利用本书从头学起。本书在基础和实践部分都有大量实例,代码短小精练,紧扣所讲要点的本质,以加深读者的印象;同时结合笔者多年使用Python语言的开发经验,阐述了很多代码编写技巧,读者可将代码复制到自己的机器上进行实验,自行实践和演练。
2.合理的章节安排
本书首先讲解了Python编程语言、网络和数据库基础知识、前端页面基础等知识点,然后详细讲解了Django、Tornado、Flask、Twisted这4大主流的Python Web开发框架,最后通过项目实践帮助读者综合运用之前学到的知识。
3.最新的框架版本
主流Python Web框架都是开源软件,并且仍随着计算机软硬件的进步处于不断发展中,所以使用Python框架的开发者必须紧跟最新的框架版本!本书讲解的4个Web框架都基于最新的框架版本,使得读者能马上将其运用在当前开发环境中。这是一本内容新颖、全面的Python Web框架应用实战教材。
4.内容全面
本书使得Python开发者不再局限于某个Web框架,一起学习这些框架有助于在学习的过程中举一反三、融会贯通。读者学完本书后可以成为Python Web编程方面的集大成者,对不同网络应用场景的设计和开发都能做到得心应手。
5.中小示例、项目案例,一个都不能少
根据作者多年的项目经验,本书通过将典型的示例与知识点加以整合,让读者对每章的知识点都有整体把握。最后4章介绍的项目案例不仅可以让读者在实际应用中更加熟练地掌握前面讲到的知识点,更能让读者了解前端开发中由轮廓到细节的完整实现流程。
本书以Python Web实战为主,所有代码均通过笔者上机调试,力求读者能学得懂、练得会。
本书的内容安排
本书共3篇13章,内容覆盖编程基础、Web框架详解及开发实战。
第1篇(第1~4章)打好Python基础
系统学习Python编程语言,并且掌握进行网络开发必备的网络基础、数据库设计、HTML、CSS、JavaScript等知识。本篇不仅适合新手学习,对有经验的开发者同样适用。
第2篇(第5~9章)详解主流Python Web框架
详细讲述了Django、Tornado、Flask、Twisted这4大主流Python Web框架的开发方法,在其中穿插学习Python虚环境、Nginx服务器、SQLAlchemy、HTML模板、HTML5 WebSocket等通用组件和技术。站在框架这个巨人的肩膀上,我们不仅可以提高开发效率,还可以实现多人协同、风格统一。
第3篇(第10~13章)实战项目
分别应用4大主流框架实践开发不同类型的网站项目应用,模拟场景覆盖社交网站、聊天室、信息管理系统、物联网消息网关等各个方面,在其中还加入了JavaScript、CSS、jQuery、Bootstrap等前端关键技术的应用,使得读者通过深入浅出的学习和实践成为全能开发者。
笔者按照自身近20年的学习和开发经验编排了本书的章节顺序,所以推荐按顺序从第1章学习到第13章,尤其不能遗漏第1篇基础部分的内容。时间特别紧迫或者只想精通个别Python Web框架的读者,也可以在阅读第1篇后直接阅读所需框架在第2篇和第3篇中的相应部分。
本书知识点图
本书面对的读者
?Python编程技术爱好者
?Django、Tornado、Flask、Twisted项目参与者
?网站设计人员
?网站开发人员
?网站后台开发人员
?Web前端开发入门者
?想由网页设计拓展为后台开发的设计者
?由单机软件开发转向Web开发的技术人员
?全栈开发人员
?大中专院校的学生及各种IT培训学校的学生
?希望自己动手设计站点原型的需求分析人员
编者推荐
本书的写作目的是确保读者能运用一些工具、框架、已有代码来提高开发效率和节约人力成本,确保读者能活学活用本书所讲解的内容。通过阅读本书,读者能知道如何设计一个网站、如何选择Python Web框架,以及如何快速使用框架进行应用开发。全书包含大量的实战案例和开发技巧,总结了使用Python进行Web开发时的优秀实践(Django、Tornado、Flask、Twisted、SQLAlchemy、Nginx、JavaScript、jQuery),讨论了各种实际问题的解决方案,是目前市场上全面实践Python Web开发的书籍。
致谢
笔者要把本书献给笔者的父母、岳父、岳母、妻子和孩子,感谢他们一直鼓励笔者,没有他们的支持,笔者无法做到这一切;还要感谢笔者的朋友和同事,感谢他们对笔者不断地鼓励和帮助。笔者非常幸运,能够和这些聪明、投入的人一起工作和交流。
5.1 网络框架综述本节学习Python网络框架的概念和开发方法,然后了解Web经典架构MVC的原理和作用。5.1.1 网络框架及MVC架构所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议、线程、进程等方面。这样能大大提高开发者的工作效率,同时提高网络应用程序的质量。在目前Python语言的几十个开发框架中,几乎所有的全栈网络框架都强制或引导开发者使用MVC架构开发Web应用。所谓全栈网络框架,是指除了封装网络和线程操作,还提供HTTP栈、数据库读写管理、HTML模板引擎等一系列功能的网络框架。本书重点讲解的Django、Tornado和Flask是全栈网络框架的典型标杆;而Twisted更专注于网络底层的高性能封装而不提供HTML模板引擎等界面功能,所以不能称之为全栈框架。MVC(Model-View-Controller)模式最早由Trygve Reenskaug在1978年提出,在20世纪80年代是程序语言Smalltalk的一种内部架构。后来MVC被其他语言所借鉴,成为了软件工程中的一种软件架构模式。MVC把Web应用系统分为3个基本部分。?模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑的部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能。Model不依赖于View和Controller,它们可以在任何时候调用Model访问数据。有些Model还提供了事件通知机制,为在其上注册过的View或Controller提供实时的数据更新。?视图(View):负责数据的显示和呈现,View是对用户的直接输出。MVC中的一个Model通常为多个View提供服务。为了获取Model的实时更新数据,View应该尽早地注册到Model中。?控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能。当用户的输入导致View发生变化时,这种变化必须是通过Model反映给View的。在MVC架构下,Controller一般不能与View直接通信,这样提高了业务数据的一致性,即以Model作为数据中心。这3个基本部分互相分离,使得在改进和升级界面及用户交互流程时,不需要重写业务逻辑及数据访问代码。MVC架构如图5.1所示。图5.1 MVC架构图注意:MVC在除Python外的其他语言中也有广泛应用,例如VC的MFC、Java的Structs及Spring、C#的.NET开发框架,读者应该有深刻的体会。5.1.2 4种Python网络框架:Django、Tornado、Flask、TwistedPython作为最主要的互联网语言,在其发展的二十多年中出现了数十种网络框架,例如Django、Flask、Twisted、Bottle、Web.py等,它们有的历史悠久,有的蓬勃发展,而有的已被停止维护,如何对其进行取舍常常使得初学者犹豫不决。本书带领读者学习当今主流的4种Python网络框架。1.DjangoDjango发布于2003年,是当前Python世界里最负盛名且最成熟的网络框架。最初用来制作在线新闻的Web站点,目前已发展为应用最广泛的Python网络框架。Django的各模块之间结合得比较紧密,所以在功能强大的同时又是一个相对封闭的系统,但是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决方法。2.TornadoTornado是一个强大的、支持协程、高效并发且可扩展的Web服务器,发布于2009年9月,应用于FriendFeed、Facebook等社交网站。Tornado的强项在于可以利用它的异步协程机制开发高并发的服务器系统。3.FlaskFlask是Python Web框架族里比较年轻的一个,发布于2010年,这使得它吸收了其他框架的优点并且把自己的主要领域定义在了微小项目上。4.TwistedTwisted是一个有着十多年历史的开源事件驱动框架。Twisted不像前3种着眼于网络HTTP应用开发,而是适用于从传输层到自定义应用协议的所有类型的网络程序的开发,并能在不同的操作系统上提供很高的运行效率。说明:目前Twisted对Python 3的支持比较有限,所以用Twisted开发的应用建议使用Python 2.7版本。
|
|