Python高效開發(fā)實戰(zhàn)——Django、Tornado、Flask、Twisted(第2版)
定 價:99 元
- 作者:劉長龍
- 出版時間:2018/12/1
- ISBN:9787121355066
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:516
- 紙張:
- 版次:01
- 開本:16開
也許你聽說過全棧工程師,他們善于設計系統(tǒng)架構,精通數(shù)據(jù)庫建模、通用網(wǎng)絡協(xié)議、后端并發(fā)處理、前端界面設計,在學術研究或工程項目上能獨當一面。通過對Python 3及相關Web框架的學習和實踐,你就可以成為這樣的全能型人才。本書分為3篇:上篇是Python基礎,帶領初學者實踐Python開發(fā)環(huán)境,掌握基本語法,同時對網(wǎng)絡協(xié)議、Web客戶端技術、數(shù)據(jù)庫建模編程等網(wǎng)絡編程基礎進行深入淺出的學習;中篇是Python框架,學習當前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,達到對各種Python網(wǎng)絡技術融會貫通的目的;下篇是Python框架實戰(zhàn),分別對4種框架進行項目實踐,利用其各自的特點開發(fā)適用于不同場景的網(wǎng)絡程序。本書內容精練、重點突出、實例豐富、講解通俗,是廣大網(wǎng)絡應用設計和開發(fā)人員不可多得的一本參考書。本書非常適合大中專院校師生學習和閱讀,也可作為計算機培訓機構的教材。
劉長龍,復旦大學信息管理學士學位、上海交通大學計算機技術碩士學位,從事計算機軟件研發(fā)十余年。對應用軟件開發(fā)有較廣泛深入了解,用C++、Python等技術主持負責過電信級實時計費系統(tǒng)、客戶管理系統(tǒng)、智能家居、物聯(lián)網(wǎng)云平臺的研究和設計開發(fā)工作。在不寫作的時候,業(yè)余時間喜歡跑步和游泳。
目 錄
上篇 Python基礎
第1章 Python基礎知識 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)境 9
1.1.5 Python編程入門——解決“斐波那契數(shù)列”問題 14
1.2 數(shù)據(jù)類型 17
1.2.1 Number類型 17
1.2.2 Sequence類型簇 21
1.2.3 string與bytes 23
1.2.4 tuple類型 30
1.2.5 list類型 31
1.2.6 set類型 32
1.2.7 dict類型 35
1.3 流程控制 37
1.3.1 程序塊與作用域 37
1.3.2 判斷語句 38
1.3.3 循環(huán)語句 40
1.3.4 語句嵌套 42
1.4 函數(shù) 43
1.4.1 定義與使用 43
1.4.2 變長參數(shù) 45
1.4.3 匿名函數(shù) 47
1.5 異常 49
1.5.1 處理異常 49
1.5.2 自定義異常 51
1.6 面向對象編程 52
1.6.1 什么是面向對象 52
1.6.2 類和對象 54
1.6.3 繼承 61
1.7 本章總結 64
第2章 Web編程之網(wǎng)絡基礎 65
2.1 TCP/IP網(wǎng)絡 66
2.1.1 計算機網(wǎng)絡綜述 66
2.1.2 TCP和UDP 70
2.1.3 C/S及B/S架構 73
2.2 HTTP 74
2.2.1 HTTP流程 75
2.2.2 HTTP消息結構 76
2.2.3 HTTP請求方法 80
2.2.4 基于HTTP的網(wǎng)站開發(fā) 80
2.3 Socket編程 82
2.3.1 Socket基礎 82
2.3.2 實戰(zhàn)演練:Socket TCP原語 83
2.3.3 實戰(zhàn)演練:Socket UDP原語 87
2.4 本章總結 88
第3章 客戶端的編程技術 89
3.1 HTML 90
3.1.1 HTML介紹 90
3.1.2 HTML基本標簽 93
3.1.3 HTML表單 99
3.2 CSS 102
3.2.1 樣式聲明方式 103
3.2.2 CSS語法 104
3.2.3 基于CSS+DIV的頁面布局 106
3.3 JavaScript 108
3.3.1 在HTML中嵌入JavaScript 108
3.3.2 JavaScript的基本語法 109
3.3.3 DOM及其讀寫 115
3.3.4 window對象 118
3.3.5 HTML事件處理 121
3.4 jQuery 124
3.4.1 使用jQuery 124
3.4.2 選擇器 125
3.4.3 行為 126
3.5 本章總結 130
第4章 數(shù)據(jù)庫及ORM 131
4.1 數(shù)據(jù)庫概念 131
4.1.1 Web開發(fā)中的數(shù)據(jù)庫 132
4.1.2 關系數(shù)據(jù)庫建模 134
4.2 關系數(shù)據(jù)庫編程 137
4.2.1 常用SQL語句 137
4.2.2 實戰(zhàn)演練:在Python中應用SQL 143
4.3 ORM編程 145
4.3.1 ORM理論基礎 145
4.3.2 Python ORM庫介紹 147
4.3.3 實戰(zhàn)演練:Peewee庫編程 148
4.4 本章總結 151
中篇 Python框架
第5章 Python網(wǎng)絡框架縱覽 154
5.1 網(wǎng)絡框架綜述 155
5.1.1 網(wǎng)絡框架及MVC架構 155
5.1.2 4種Python網(wǎng)絡框架:Django、Tornado、Flask、Twisted 156
5.2 開發(fā)環(huán)境準備 157
5.2.1 easy_install與pip的使用 157
5.2.2 使用Python虛環(huán)境virtualenv 159
5.3 Web服務器 161
5.3.1 實戰(zhàn)演練1:WSGI接口 161
5.3.2 實戰(zhàn)演練2:Linux+Nginx+uWSGI配置 162
5.3.3 實戰(zhàn)演練3:建立安全的HTTPS網(wǎng)站 168
5.4 本章總結 170
第6章 企業(yè)級開發(fā)框架——Django 171
6.1 Django綜述 172
6.1.1 Django的特點及結構 172
6.1.2 安裝Django 2 173
6.2 實戰(zhàn)演練:開發(fā)Django站點 173
6.2.1 建立項目 173
6.2.2 建立應用 174
6.2.3 基本視圖 175
6.2.4 內置Web服務器 177
6.2.5 模型類 178
6.2.6 表單視圖 181
6.2.7 使用管理界面 184
6.3 Django模型層 186
6.3.1 基本操作 186
6.3.2 關系操作 194
6.3.3 面向對象ORM 198
6.4 Django視圖層 201
6.4.1 URL映射 201
6.4.2 視圖函數(shù) 207
6.4.3 模板語法 209
6.5 使用Django表單 215
6.5.1 表單綁定狀態(tài) 215
6.5.2 表單數(shù)據(jù)驗證 215
6.5.3 檢查變更字段 218
6.6 個性化管理員站點 219
6.6.1 模型 219
6.6.2 模板 221
6.6.3 站點 223
6.7 本章總結 225
第7章 高并發(fā)處理框架——Tornado 226
7.1 Tornado概述 227
7.1.1 Tornado介紹 227
7.1.2 安裝Tornado 228
7.2 異步及協(xié)程基礎 228
7.2.1 同步與異步I/O 228
7.2.2 可迭代(Iterable)與迭代器(Iterator) 229
7.2.3 用yield定義生成器(Generator) 231
7.2.4 協(xié)程 233
7.3 實戰(zhàn)演練:開發(fā)Tornado網(wǎng)站 237
7.3.1 網(wǎng)站結構 237
7.3.2 路由解析 238
7.3.3 RequestHandler 240
7.3.4 異步化及協(xié)程化 245
7.4 用戶身份驗證框架 247
7.4.1 安全Cookie機制 247
7.4.2 用戶身份認證 249
7.4.3 防止跨站攻擊 251
7.5 HTML 5 WebSocket概念及應用 253
7.5.1 WebSocket概念 253
7.5.2 服務端編程 256
7.5.3 客戶端編程 259
7.6 Tornado網(wǎng)站部署 261
7.6.1 調試模式 261
7.6.2 靜態(tài)文件 263
7.6.3 運營期配置 265
7.7 本章總結 267
第8章 支持快速建站的框架——Flask 268
8.1 Flask綜述 269
8.1.1 Flask的特點 269
8.1.2 安裝Flask、SQLAlchemy和WTForm 270
8.2 實戰(zhàn)演練:開發(fā)Flask站點 271
8.2.1 Hello World程序 272
8.2.2 模板渲染 273
8.2.3 重定向和錯誤處理 275
8.3 路由詳解 276
8.3.1 帶變量的路由 276
8.3.2 HTTP方法綁定 278
8.3.3 路由地址反向生成 279
8.4 使用Context上下文 281
8.4.1 會話上下文 281
8.4.2 應用全局對象 282
8.4.3 請求上下文 284
8.4.4 回調接入點 286
8.5 Jinja2模板編程 288
8.5.1 Jinja2語法 288
8.5.2 使用過濾器 290
8.5.3 流程控制 293
8.5.4 模板繼承 296
8.6 SQLAlchemy數(shù)據(jù)庫編程 298
8.6.1 SQLAlchemy入門 299
8.6.2 主流數(shù)據(jù)庫的連接方式 303
8.6.3 查詢條件設置 303
8.6.4 關系操作 306
8.6.5 級聯(lián) 310
8.7 WTForm表單編程 316
8.7.1 定義表單 317
8.7.2 顯示表單 318
8.7.3 獲取表單數(shù)據(jù) 319
8.8 本章總結 321
第9章 底層自定義協(xié)議網(wǎng)絡框架——Twisted 322
9.1 Twisted綜述 323
9.1.1 框架概況 323
9.1.2 安裝Twisted及周邊組件 323
9.2 實戰(zhàn)演練:開發(fā)TCP廣播系統(tǒng) 325
9.2.1 廣播服務器 325
9.2.2 廣播客戶端 327
9.3 UDP編程技術 330
9.3.1 實戰(zhàn)演練1:普通UDP 330
9.3.2 實戰(zhàn)演練2:Connected UDP 333
9.3.3 實戰(zhàn)演練3:組播技術 335
9.4 Twisted高級話題 337
9.4.1 延遲調用 337
9.4.2 使用多線程 343
9.4.3 安全信道 345
9.5 本章總結 348
下篇 Python框架實戰(zhàn)
第10章 實戰(zhàn)1:用Django+PostgreSQL開發(fā)移動Twitter 352
10.1 項目概覽 353
10.1.1 項目來源(GitHub) 353
10.1.2 安裝PostgreSQL數(shù)據(jù)庫并配置Python環(huán)境 354
10.1.3 項目結構 356
10.2 頁面框架設計 358
10.2.1 基模板文件 359
10.2.2 手機大小自適應(jQuery技術) 361
10.2.3 文本國際化 362
10.2.4 網(wǎng)站頁面一覽 365
10.3 用戶注冊及登錄 366
10.3.1 頁面設計 366
10.3.2 模型層 368
10.3.3 視圖設計 369
10.4 手機消息的發(fā)布和瀏覽 374
10.4.1 頁面設計 374
10.4.2 模型層 379
10.4.3 視圖設計 380
10.5 社交朋友圈 383
10.5.1 頁面設計 383
10.5.2 模型層 385
10.5.3 視圖設計 386
10.6 個人資料配置 389
10.6.1 頁面設計 390
10.6.2 圖片上傳(第三方庫PIL) 391
10.7 Web管理站點 395
10.7.1 定義可管理對象 395
10.7.2 配置管理員 396
10.7.3 使用管理站點 396
10.8 本章總結 398
第11章 實戰(zhàn)2:用Tornado+jQuery開發(fā)WebSocket聊天室 399
11.1 聊天室概覽 400
11.1.1 項目介紹 400
11.1.2 安裝和代碼結構 401
11.2 消息通信 402
11.2.1 建立網(wǎng)站 402
11.2.2 WebSocket服務器 405
11.2.3 WebSocket客戶端 406
11.3 聊天功能 409
11.3.1 昵稱 409
11.3.2 消息來源 411
11.3.3 歷史消息緩存 413
11.4 用戶面板 414
11.4.1 用CSS定義用戶列表 414
11.4.2 服務器通知 416
11.4.3 響應服務器動態(tài)通知(jQuery動態(tài)編程) 417
11.5 本章總結 418
第12章 實戰(zhàn)3:用Flask+Bootstrap+Restful開發(fā)學校管理系統(tǒng) 419
12.1 系統(tǒng)概覽 420
12.1.1 項目來源及功能 420
12.1.2 項目安裝 421
12.1.3 代碼結構 424
12.2 數(shù)據(jù)模型設計 425
12.2.1 E-R圖設計 426
12.2.2 SQLAlchemy建模 428
12.3 響應式頁面框架設計 434
12.3.1 基模板組件引用 434
12.3.2 響應式導航 437
12.4 新建學校 440
12.4.1 WTForm表單 440
12.4.2 視圖及文件上傳 442
12.4.3 響應式布局 443
12.5 學校管理 446
12.5.1 查詢視圖 446
12.5.2 分頁模板 449
12.6 Restful接口 451
12.6.1 Restful概念 451
12.6.2 Restless插件 452
12.6.3 開發(fā)Restful接口 456
12.7 本章總結 461
第13章 實戰(zhàn)4:用Twisted+SQLAlchemy+ ZeroMQ開發(fā)跨平臺物聯(lián)網(wǎng)消息網(wǎng)關 462
13.1 項目概況 463
13.1.1 功能定義 463
13.1.2 安裝和測試 464
13.1.3 項目結構 467
13.2 項目設計 469
13.2.1 SQLAlchmey建模 469
13.2.2 TCP接口設計 473
13.3 通信引擎 476
13.3.1 跨平臺安全端口 476
13.3.2 管理連接 478
13.3.3 收發(fā)數(shù)據(jù) 479
13.3.4 TCP流式分包 482
13.3.5 異步執(zhí)行 484
13.4 協(xié)議編程 486
13.4.1 執(zhí)行命令 486
13.4.2 struct解析字節(jié)流 489
13.4.3 序列號生成 490
13.4.4 連接保持 491
13.4.5 發(fā)送Response 492
13.4.6 錯誤機制 494
13.5 ZeroMQ集群 496
13.5.1 內部接口設計 496
13.5.2 PUB/SUB通信模型編程 498
13.6 本章總結 499