Python高效開發(fā)實(shí)戰(zhàn)——Django、Tornado、Flask、Twisted(第3版)
定 價(jià):108 元
叢書名:高效實(shí)戰(zhàn)精品
- 作者:劉長(zhǎng)龍
- 出版時(shí)間:2021/8/1
- ISBN:9787121416033
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:520
- 紙張:
- 版次:01
- 開本:16開
也許你聽說過全棧工程師,他們善于設(shè)計(jì)系統(tǒng)架構(gòu),精通數(shù)據(jù)庫建模、通用網(wǎng)絡(luò)協(xié)議、后端并發(fā)處理、前端界面設(shè)計(jì),在學(xué)術(shù)研究或工程項(xiàng)目中能獨(dú)當(dāng)一面。通過對(duì)Python 3及相關(guān)Web框架的學(xué)習(xí)和實(shí)踐,你就可以成為這樣的全能型人才。本書分為3篇:上篇是Python基礎(chǔ),帶領(lǐng)初學(xué)者實(shí)踐Python開發(fā)環(huán)境,掌握基本語法,同時(shí)對(duì)網(wǎng)絡(luò)協(xié)議、Web客戶端技術(shù)、數(shù)據(jù)庫建模等網(wǎng)絡(luò)編程基礎(chǔ)進(jìn)行深入淺出的學(xué)習(xí);中篇是Python框架,學(xué)習(xí)當(dāng)前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,達(dá)到對(duì)各種Python網(wǎng)絡(luò)技術(shù)融會(huì)貫通的目的;下篇是Python框架實(shí)戰(zhàn),分別使用4種框架進(jìn)行項(xiàng)目實(shí)踐,利用其各自的特點(diǎn)開發(fā)適用于不同場(chǎng)景的網(wǎng)絡(luò)程序。本書內(nèi)容精練、重點(diǎn)突出、實(shí)例豐富、講解通俗,是廣大網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)和開發(fā)人員不可多得的一本參考書。本書非常適合大中專院校師生學(xué)習(xí)和閱讀,也可作為計(jì)算機(jī)培訓(xùn)機(jī)構(gòu)的教材。
劉長(zhǎng)龍 ——寫作和編程都是在創(chuàng)作新的自己復(fù)旦大學(xué)信息管理學(xué)士學(xué)位、上海交通大學(xué)計(jì)算機(jī)技術(shù)碩士學(xué)位,從事計(jì)算機(jī)軟件研發(fā)十余年。對(duì)應(yīng)用軟件開發(fā)有較廣泛深入了解,用C++、Python等技術(shù)主持負(fù)責(zé)過電信級(jí)實(shí)時(shí)計(jì)費(fèi)系統(tǒng)、客戶管理系統(tǒng)、智能家居、物聯(lián)網(wǎng)云平臺(tái)的研究和設(shè)計(jì)開發(fā)工作。在不寫作的時(shí)候,業(yè)余時(shí)間喜歡跑步和游泳。
目 錄
上篇 Python基礎(chǔ)
第1章 Python基礎(chǔ)知識(shí) 2
1.1 Python綜述 3
1.1.1 了解Python的特性及版本 3
1.1.2 安裝Python 5
1.1.3 使用Python原生編輯器 8
1.1.4 使用Eclipse開發(fā)環(huán)境 10
1.1.5 Python編程入門—解決“斐波那契數(shù)列”問題 15
1.2 數(shù)據(jù)類型 18
1.2.1 Number類型 18
1.2.2 Sequence類型 22
1.2.3 string與bytes 24
1.2.4 tuple類型 31
1.2.5 list類型 32
1.2.6 set類型 33
1.2.7 dict類型 36
1.3 流程控制 38
1.3.1 程序塊與作用域 38
1.3.2 判斷語句 39
1.3.3 循環(huán)語句 41
1.3.4 語句嵌套 43
1.4 函數(shù) 44
1.4.1 定義與使用 44
1.4.2 變長(zhǎng)參數(shù) 46
1.4.3 匿名函數(shù) 48
1.5 異常 50
1.5.1 處理異常 50
1.5.2 自定義異常 52
1.6 面向?qū)ο缶幊?53
1.6.1 什么是面向?qū)ο?53
1.6.2 類和對(duì)象 55
1.6.3 繼承 62
1.7 本章總結(jié) 65
第2章 Web編程之網(wǎng)絡(luò)基礎(chǔ) 66
2.1 TCP/IP網(wǎng)絡(luò) 67
2.1.1 計(jì)算機(jī)網(wǎng)絡(luò)綜述 67
2.1.2 TCP和UDP 71
2.1.3 C/S及B/S架構(gòu) 74
2.2 HTTP 75
2.2.1 HTTP流程 76
2.2.2 HTTP消息結(jié)構(gòu) 77
2.2.3 HTTP請(qǐng)求方法 81
2.2.4 基于HTTP的網(wǎng)站開發(fā) 81
2.3 Socket編程 83
2.3.1 Socket基礎(chǔ) 83
2.3.2 實(shí)戰(zhàn)演練:Socket TCP原語 84
2.3.3 實(shí)戰(zhàn)演練:Socket UDP原語 88
2.4 本章總結(jié) 89
第3章 客戶端的編程技術(shù) 90
3.1 HTML 91
3.1.1 HTML介紹 91
3.1.2 HTML基本標(biāo)簽 94
3.1.3 HTML表單 100
3.2 CSS 103
3.2.1 樣式聲明方式 104
3.2.2 CSS語法 105
3.2.3 基于CSS+DIV的頁面布局 107
3.3 JavaScript 109
3.3.1 在HTML中嵌入JavaScript 109
3.3.2 JavaScript的基本語法 110
3.3.3 DOM及其讀寫 115
3.3.4 window對(duì)象 119
3.3.5 HTML事件處理 122
3.4 jQuery 125
3.4.1 使用jQuery 125
3.4.2 選擇器 126
3.4.3 行為 127
3.5 本章總結(jié) 131
第4章 數(shù)據(jù)庫及ORM 132
4.1 數(shù)據(jù)庫概念 132
4.1.1 Web開發(fā)中的數(shù)據(jù)庫 133
4.1.2 關(guān)系數(shù)據(jù)庫建模 135
4.2 關(guān)系數(shù)據(jù)庫編程 138
4.2.1 常用SQL語句 138
4.2.2 實(shí)戰(zhàn)演練:在Python中應(yīng)用SQL 144
4.3 ORM編程 146
4.3.1 ORM理論基礎(chǔ) 146
4.3.2 Python ORM庫介紹 148
4.3.3 實(shí)戰(zhàn)演練:Peewee庫編程 149
4.4 本章總結(jié) 152
中篇 Python框架
第5章 Python網(wǎng)絡(luò)框架縱覽 154
5.1 網(wǎng)絡(luò)框架綜述 155
5.1.1 網(wǎng)絡(luò)框架及MVC架構(gòu) 155
5.1.2 4種Python網(wǎng)絡(luò)框架:Django、Tornado、Flask、Twisted 156
5.2 開發(fā)環(huán)境準(zhǔn)備 157
5.2.1 easy_install與pip的使用 157
5.2.2 使用Python虛環(huán)境virtualenv 159
5.3 Web服務(wù)器 161
5.3.1 實(shí)戰(zhàn)演練1:WSGI 161
5.3.2 實(shí)戰(zhàn)演練2:Linux+Nginx+uWSGI配置 163
5.3.3 實(shí)戰(zhàn)演練3:建立安全的HTTPS網(wǎng)站 169
5.4 本章總結(jié) 171
第6章 企業(yè)級(jí)開發(fā)框架——Django 172
6.1 Django綜述 173
6.1.1 Django的特點(diǎn)及結(jié)構(gòu) 173
6.1.2 安裝Django 3 174
6.2 實(shí)戰(zhàn)演練:開發(fā)Django站點(diǎn) 174
6.2.1 建立項(xiàng)目 174
6.2.2 建立應(yīng)用 176
6.2.3 基本視圖 177
6.2.4 內(nèi)置Web服務(wù)器 178
6.2.5 模型類 179
6.2.6 表單視圖 182
6.2.7 使用管理界面 186
6.3 Django模型層 187
6.3.1 基本操作 187
6.3.2 關(guān)系操作 195
6.3.3 面向?qū)ο驩RM 200
6.4 Django視圖層 203
6.4.1 URL映射 203
6.4.2 視圖函數(shù) 209
6.4.3 模板語法 210
6.5 使用Django表單 216
6.5.1 表單綁定狀態(tài) 216
6.5.2 表單數(shù)據(jù)驗(yàn)證 217
6.5.3 檢查變更字段 219
6.6 個(gè)性化管理員站點(diǎn) 220
6.6.1 模型 220
6.6.2 模板 223
6.6.3 站點(diǎn) 225
6.7 本章總結(jié) 227
第7章 高并發(fā)處理框架——Tornado 228
7.1 Tornado概述 229
7.1.1 Tornado介紹 229
7.1.2 安裝Tornado 229
7.2 異步及協(xié)程基礎(chǔ) 230
7.2.1 同步與異步I/O 230
7.2.2 可迭代(Iterable)與迭代器(Iterator) 231
7.2.3 用yield定義生成器(Generator) 233
7.2.4 協(xié)程 235
7.3 實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站 239
7.3.1 網(wǎng)站結(jié)構(gòu) 239
7.3.2 路由解析 240
7.3.3 RequestHandler 242
7.3.4 異步協(xié)程化 247
7.4 用戶身份驗(yàn)證框架 248
7.4.1 安全Cookie機(jī)制 248
7.4.2 用戶身份認(rèn)證 250
7.4.3 防止跨站攻擊 252
7.5 HTML 5 WebSocket的概念及應(yīng)用 255
7.5.1 WebSocket的概念 255
7.5.2 服務(wù)端編程 257
7.5.3 客戶端編程 260
7.6 Tornado網(wǎng)站部署 262
7.6.1 調(diào)試模式 262
7.6.2 靜態(tài)文件 264
7.6.3 運(yùn)營(yíng)期配置 266
7.7 本章總結(jié) 268
第8章 支持快速建站的框架——Flask 269
8.1 Flask綜述 270
8.1.1 Flask的特點(diǎn) 270
8.1.2 安裝Flask、SQLAlchemy和WTForm 271
8.2 實(shí)戰(zhàn)演練:開發(fā)Flask站點(diǎn) 272
8.2.1 Hello World程序 272
8.2.2 模板渲染 274
8.2.3 重定向和錯(cuò)誤處理 276
8.3 路由詳解 277
8.3.1 帶變量的路由 277
8.3.2 HTTP方法綁定 279
8.3.3 路由地址反向生成 280
8.4 使用上下文 282
8.4.1 會(huì)話上下文 282
8.4.2 應(yīng)用全局對(duì)象 283
8.4.3 請(qǐng)求上下文 285
8.4.4 回調(diào)接入點(diǎn) 287
8.5 Jinja2模板編程 289
8.5.1 Jinja2語法 289
8.5.2 使用過濾器 291
8.5.3 流程控制 294
8.5.4 模板繼承 297
8.6 SQLAlchemy數(shù)據(jù)庫編程 300
8.6.1 SQLAlchemy入門 300
8.6.2 主流數(shù)據(jù)庫的連接方式 304
8.6.3 查詢條件設(shè)置 304
8.6.4 關(guān)系操作 307
8.6.5 級(jí)聯(lián) 312
8.7 WTForm表單編程 318
8.7.1 定義表單 318
8.7.2 顯示表單 319
8.7.3 獲取表單數(shù)據(jù) 321
8.8 本章總結(jié) 323
第9章 底層自定義協(xié)議網(wǎng)絡(luò)框架——Twisted 324
9.1 Twisted綜述 325
9.1.1 框架概況 325
9.1.2 安裝Twisted及周邊組件 325
9.2 實(shí)戰(zhàn)演練:開發(fā)TCP廣播系統(tǒng) 327
9.2.1 廣播服務(wù)器 327
9.2.2 廣播客戶端 329
9.3 UDP編程技術(shù) 332
9.3.1 實(shí)戰(zhàn)演練1:普通UDP 333
9.3.2 實(shí)戰(zhàn)演練2:Connected UDP 336
9.3.3 實(shí)戰(zhàn)演練3:組播技術(shù) 337
9.4 Twisted高級(jí)話題 339
9.4.1 延遲調(diào)用 339
9.4.2 使用多線程 345
9.4.3 安全信道 347
9.5 本章總結(jié) 351
下篇 Python框架實(shí)戰(zhàn)
第10章 實(shí)戰(zhàn)1:用Django+PostgreSQL開發(fā)移動(dòng)Twitter 354
10.1 項(xiàng)目概覽 355
10.1.1 項(xiàng)目來源(GitHub) 355
10.1.2 安裝PostgreSQL數(shù)據(jù)庫并配置Python環(huán)境 356
10.1.3 項(xiàng)目結(jié)構(gòu) 359
10.2 頁面框架設(shè)計(jì) 361
10.2.1 基模板文件 361
10.2.2 手機(jī)大小自適應(yīng)(jQuery技術(shù)) 363
10.2.3 文本國際化 364
10.2.4 網(wǎng)站頁面一覽 367
10.3 用戶注冊(cè)及登錄 368
10.3.1 頁面設(shè)計(jì) 368
10.3.2 模型層 370
10.3.3 視圖設(shè)計(jì) 371
10.4 手機(jī)消息的發(fā)布和瀏覽 376
10.4.1 頁面設(shè)計(jì) 376
10.4.2 模型層 381
10.4.3 視圖設(shè)計(jì) 382
10.5 社交朋友圈 385
10.5.1 頁面設(shè)計(jì) 385
10.5.2 模型層 388
10.5.3 視圖設(shè)計(jì) 389
10.6 個(gè)人資料配置 392
10.6.1 頁面設(shè)計(jì) 392
10.6.2 圖片上傳(第三方庫PIL) 394
10.7 Web管理站點(diǎn) 397
10.7.1 定義可管理對(duì)象 397
10.7.2 配置管理員 398
10.7.3 使用管理站點(diǎn) 399
10.8 本章總結(jié) 400
第11章 實(shí)戰(zhàn)2:用Tornado+jQuery開發(fā)WebSocket聊天室 402
11.1 聊天室概覽 403
11.1.1 項(xiàng)目介紹 403
11.1.2 安裝和代碼結(jié)構(gòu) 404
11.2 消息通信 405
11.2.1 建立網(wǎng)站 405
11.2.2 WebSocket服務(wù)器 408
11.2.3 WebSocket客戶端 409
11.3 聊天功能 412
11.3.1 昵稱 412
11.3.2 消息來源 414
11.3.3 歷史消息緩存 416
11.4 用戶面板 417
11.4.1 用CSS定義用戶列表 417
11.4.2 服務(wù)器通知 419
11.4.3 響應(yīng)服務(wù)器動(dòng)態(tài)通知(jQuery動(dòng)態(tài)編程) 420
11.5 本章總結(jié) 421
第12章 實(shí)戰(zhàn)3:用Flask+Bootstrap+Restful開發(fā)學(xué)校管理系統(tǒng) 422
12.1 系統(tǒng)概覽 423
12.1.1 項(xiàng)目來源及功能 423
12.1.2 項(xiàng)目安裝 424
12.1.3 代碼結(jié)構(gòu) 427
12.2 數(shù)據(jù)模型設(shè)計(jì) 429
12.2.1 E-R圖設(shè)計(jì) 429
12.2.2 SQLAlchemy建模 431
12.3 響應(yīng)式頁面框架設(shè)計(jì) 437
12.3.1 基模板組件引用 437
12.3.2 響應(yīng)式導(dǎo)航 440
12.4 新建學(xué)校 443
12.4.1 WTForm表單 443
12.4.2 視圖及文件上傳 445
12.4.3 響應(yīng)式布局 446
12.5 學(xué)校管理 449
12.5.1 查詢視圖 449
12.5.2 分頁模板 452
12.6 Restful接口 454
12.6.1 Restful概念 454
12.6.2 Restless插件 455
12.6.3 開發(fā)Restful接口 459
12.7 本章總結(jié) 464
第13章 實(shí)戰(zhàn)4:用Twisted+SQLAlchemy+ZeroMQ開發(fā)跨平臺(tái)物聯(lián)網(wǎng)消息網(wǎng)關(guān) 465
13.1 項(xiàng)目概況 466
13.1.1 功能定義 466
13.1.2 安裝和測(cè)試 467
13.1.3 項(xiàng)目結(jié)構(gòu) 471
13.2 項(xiàng)目設(shè)計(jì) 472
13.2.1 SQLAlchmey建模 472
13.2.2 TCP接口設(shè)計(jì) 476
13.3 通信引擎 479
13.3.1 跨平臺(tái)安全端口 479
13.3.2 管理連接 481
13.3.3 收發(fā)數(shù)據(jù) 482
13.3.4 TCP流式分包 485
13.3.5 異步執(zhí)行 487
13.4 協(xié)議編程 488
13.4.1 執(zhí)行命令 489
13.4.2 struct解析字節(jié)流 491
13.4.3 序列號(hào)生成 493
13.4.4 連接保持 494
13.4.5 發(fā)送Response 495
13.4.6 錯(cuò)誤機(jī)制 497
13.5 ZeroMQ集群 499
13.5.1 內(nèi)部接口設(shè)計(jì) 499
13.5.2 PUB/SUB通信模型編程 501
13.6 本章總結(jié) 502