Python 高效開發實戰 — Django、Tornado、Flask、Twisted, 3/e

劉長龍

買這商品的人也買了...

商品描述

也許你聽說過全棧工程師,他們善於設計系統架構,精通數據庫建模、通用網絡協議、後端並發處理、前端界面設計,在學術研究或工程項目中能獨當一面。通過對Python 3及相關Web框架的學習和實踐,你就可以成為這樣的全能型人才。本書分為3篇:上篇是Python基礎,帶領初學者實踐Python開發環境,掌握基本語法,同時對網絡協議、Web客戶端技術、數據庫建模等網絡編程基礎進行深入淺出的學習;中篇是Python框架,學習當前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,達到對各種Python網絡技術融會貫通的目的;下篇是Python框架實戰,分別使用4種框架進行項目實踐,利用其各自的特點開發適用於不同場景的網絡程序。本書內容精練、重點突出、實例豐富、講解通俗,是廣大網絡應用設計和開發人員不可多得的一本參考書。本書非常適合大中專院校師生學習和閱讀,也可作為電腦培訓機構的教材。

作者簡介

劉長龍
――寫作和編程都是在創作新的自己
復旦大學信息管理學士學位、上海交通大學計算機技術碩士學位,從事計算機軟件研發十餘年。
對應用軟件開發有較廣泛深入了解,用C++、Python等技術主持負責過電信級實時計費系統、客戶管理系統、智能家居、物聯網雲平台的研究和設計開發工作。
在不寫作的時候,業餘時間喜歡跑步和游泳。

目錄大綱

目錄
上篇 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開發環境 10
1.1.5 Python編程入門―解決“斐波那契數列”問題 15
1.2 數據類型 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 循環語句 41
1.3.4 語句嵌套 43
1.4 函數 44
1.4.1 定義與使用 44
1.4.2 變長參數 46
1.4.3 匿名函數 48
1.5 異常 50
1.5.1 處理異常 50
1.5.2 自定義異常 52
1.6 面向對象編程 53
1.6.1 什麼是面向對象 53
1.6.2 類和對象 55
1.6.3 繼承 62
1.7 本章總結 65
第2章 Web編程之網絡基礎 66
2.1 TCP/IP網絡 67
2.1.1 計算機網絡綜述 67
2.1.2 TCP和UDP 71
2.1.3 C/S及B/S架構 74
2.2 HTTP 75
2.2.1 HTTP流程 76
2.2.2 HTTP消息結構 77
2.2.3 HTTP請求方法 81
2.2.4 基於HTTP的網站開發 81
2.3 Socket編程 83
2.3.1 Socket基礎 83
2.3.2 實戰演練:Socket TCP原語 84
2.3.3 實戰演練:Socket UDP原語 88
2.4 本章總結 89
第3章 客戶端的編程技術 90
3.1 HTML 91
3.1.1 HTML介紹 91
3.1.2 HTML基本標籤 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對象 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 本章總結 131
第4章 數據庫及ORM 132
4.1 數據庫概念 132
4.1.1 Web開發中的數據庫 133
4.1.2 關係數據庫建模 135
4.2 關係數據庫編程 138
4.2.1 常用SQL語句 138
4.2.2 實戰演練:在Python中應用SQL 144
4.3 ORM編程 146
4.3.1 ORM理論基礎 146
4.3.2 Python ORM庫介紹 148
4.3.3 實戰演練:Peewee庫編程 149
4.4 本章總結 152
中篇 Python框架
第5章 Python網絡框架縱覽 154
5.1 網絡框架綜述 155
5.1.1 網絡框架及MVC架構 155
5.1.2 4種Python網絡框架:Django、Tornado、Flask、Twisted 156
5.2 開發環境準備 157
5.2.1 easy_install與pip的使用 157
5.2.2 使用Python虛環境virtualenv 159
5.3 Web服務器 161
5.3.1 實戰演練1:WSGI 161
5.3.2 實戰演練2:Linux+Nginx+uWSGI配置 163
5.3.3 實戰演練3:建立安全的HTTPS網站 169
5.4 本章總結 171
第6章 企業級開發框架――Django 172
6.1 Django綜述 173
6.1.1 Django的特點及結構 173
6.1.2 安裝Django 3 174
6.2 實戰演練:開發Django站點 174
6.2.1 建立項目 174
6.2.2 建立應用 176
6.2.3 基本視圖 177
6.2.4 內置Web服務器 178
6.2.5 模型類 179
6.2.6 表單視圖 182
6.2.7 使用管理界面 186
6.3 Django模型層 187
6.3.1 基本操作 187
6.3.2 關係操作 195
6.3.3 面向對象ORM 200
6.4 Django視圖層 203
6.4.1 URL映射 203
6.4.2 視圖函數 209
6.4.3 模板語法 210
6.5 使用Django表單 216
6.5.1 表單綁定狀態 216
6.5.2 表單數據驗證 217
6.5.3 檢查變更字段 219
6.6 個性化管理員站點 220
6.6.1 模型 220
6.6.2 模板 223
6.6.3 站點 225
6.7 本章總結 227
第7章 高並發處理框架――Tornado 228
7.1 Tornado概述 229
7.1.1 Tornado介紹 229
7.1.2 安裝Tornado 229
7.2 異步及協程基礎 230
7.2.1 同步與異步I/O 230
7.2.2 可迭代(Iterable)與迭代器(Iterator) 231
7.2.3 用yield定義生成器(Generator) 233
7.2.4 協程 235
7.3 實戰演練:開發Tornado網站 239
7.3.1 網站結構 239
7.3.2 路由解析 240
7.3.3 RequestHandler 242
7.3.4 異步協程化 247
7.4 用戶身份驗證框架 248
7.4.1 安全Cookie機制 248
7.4.2 用戶身份認證 250
7.4.3 防止跨站攻擊 252
7.5 HTML 5 WebSocket的概念及應用 255
7.5.1 WebSocket的概念 255
7.5.2 服務端編程 257
7.5.3 客戶端編程 260
7.6 Tornado網站部署 262
7.6.1 調試模式 262
7.6.2 靜態文件 264
7.6.3 運營期配置 266
7.7 本章總結 268
第8章 支持快速建站的框架――Flask 269
8.1 Flask綜述 270
8.1.1 Flask的特點 270
8.1.2 安裝Flask、SQLAlchemy和WTForm 271
8.2 實戰演練:開發Flask站點 272
8.2.1 Hello World程序 272
8.2.2 模板渲染 274
8.2.3 重定向和錯誤處理 276
8.3 路由詳解 277
8.3.1 帶變量的路由 277
8.3.2 HTTP方法綁定 279
8.3.3 路由地址反向生成 280
8.4 使用上下文 282
8.4.1 會話上下文 282
8.4.2 應用全局對象 283
8.4.3 請求上下文 285
8.4.4 回調接入點 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數據庫編程 300
8.6.1 SQLAlchemy入門 300
8.6.2 主流數據庫的連接方式 304
8.6.3 查詢條件設置 304
8.6.4 關係操作 307
8.6.5 級聯 312
8.7 WTForm表單編程 318
8.7.1 定義表單 318
8.7.2 顯示表單 319
8.7.3 獲取表單數據 321
8.8 本章總結 323
第9章 底層自定義協議網絡框架――Twisted 324
9.1 Twisted綜述 325
9.1.1 框架概況 325
9.1.2 安裝Twisted及周邊組件 325
9.2 實戰演練:開發TCP廣播系統 327
9.2.1 廣播服務器 327
9.2.2 廣播客戶端 329
9.3 UDP編程技術 332
9.3.1 實戰演練1:普通UDP 333
9.3.2 實戰演練2:Connected UDP 336
9.3.3 實戰演練3:組播技術 337
9.4 Twisted高級話題 339
9.4.1 延遲調用 339
9.4.2 使用多線程 345
9.4.3 安全信道 347
9.5 本章總結 351
下篇 Python框架實戰
第10章 實戰1:用Django+PostgreSQL開發移動Twitter 354
10.1 項目概覽 355
10.1.1 項目來源(GitHub) 355
10.1.2 安裝PostgreSQL數據庫並配置Python環境 356
10.1.3 項目結構 359
10.2 頁面框架設計 361
10.2.1 基模板文件 361
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 模型層 388
10.5.3 視圖設計 389
10.6 個人資料配置 392
10.6.1 頁面設計 392
10.6.2 圖片上傳(第三方庫PIL) 394
10.7 Web管理站點 397
10.7.1 定義可管理對象 397
10.7.2 配置管理員 398
10.7.3 使用管理站點 399
10.8 本章總結 400
第11章 實戰2:用Tornado+jQuery開發WebSocket聊天室 402
11.1 聊天室概覽 403
11.1.1 項目介紹 403
11.1.2 安裝和代碼結構 404
11.2 消息通信 405
11.2.1 建立網站 405
11.2.2 WebSocket服務器 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 服務器通知 419
11.4.3 響應服務器動態通知(jQuery動態編程) 420
11.5 本章總結 421
第12章 實戰3:用Flask+Bootstrap+Restful開發學校管理系統 422
12.1 系統概覽 423
12.1.1 項目來源及功能 423
12.1.2 項目安裝 424
12.1.3 代碼結構 427
12.2 數據模型設計 429
12.2.1 E-R圖設計 429
12.2.2 SQLAlchemy建模 431
12.3 響應式頁面框架設計 437
12.3.1 基模板組件引用 437
12.3.2 響應式導航 440
12.4 新建學校 443
12.4.1 WTForm表單 443
12.4.2 視圖及文件上傳 445
12.4.3 響應式佈局 446
12.5 學校管理 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 開發Restful接口 459
12.7 本章總結 464
第13章 實戰4:用Twisted+SQLAlchemy+ZeroMQ開發跨平台物聯網消息網關 465
13.1 項目概況 466
13.1.1 功能定義 466
13.1.2 安裝和測試 467
13.1.3 項目結構 471
13.2 項目設計 472
13.2.1 SQLAlchmey建模 472
13.2.2 TCP接口設計 476
13.3 通信引擎 479
13.3.1 跨平台安全端口 479
13.3.2 管理連接 481
13.3.3 收發數據 482
13.3.4 TCP流式分包 485
13.3.5 異步執行 487
13.4 協議編程 488
13.4.1 執行命令 489
13.4.2 struct解析字節流 491
13.4.3 序列號生成 493
13.4.4 連接保持 494
13.4.5 發送Response 495
13.4.6 錯誤機制 497
13.5 ZeroMQ集群 499
13.5.1 內部接口設計 499
13.5.2 PUB/SUB通信模型編程 501
13.6 本章總結 502