Python Web 開發手冊:基礎·實戰·強化
內容描述
《Python Web開發手冊:基礎·實戰·強化》是“計算機科學與技術手冊系列”圖書之一,該系列圖書內容全面,
以理論聯繫實際、能學到並做到為宗旨,以技術為核心,以案例為輔助,
引領讀者全面學習基礎技術、代碼編寫方法和具體應用項目。
旨在為想要進入相應領域或者已經在該領域深耕多年的技術人員提供新而全的技術性內容及案例。
本書以Python語言為載體講解Web開發,分為4篇,分別是:
Web基礎篇、Flask框架實戰篇、Django框架實戰篇和項目強化篇,共30章,
內容由淺入深,循序漸進,使讀者在打好基礎的同時逐步提升。
本書內容包含了Web開發必備的基礎知識和數據庫相關知識,
以較大篇幅講解了目前應用較廣的兩個框架(Flask和Django)和相應的14個關鍵案例,
同時配備了兩個大型項目,使讀者能夠同步做出產品,達到學到並且做到的目的。
本書適合Python Web開發從業者、Python開發程序員、
Python開發以及人工智能的愛好者閱讀,也可供高校計算機相關專業師生參考。
目錄大綱
第1篇 Web基礎篇
第1章 Web基礎
1.1 Web概述 3
1.1.1 Web的發展歷程 3
1.1.2 Web程序工作原理 4
1.2 Web框架簡介 5
1.2.1 ORM簡介 5
1.2.2 模板引擎 5
1.3 常用的Python Web框架 6
1.3.1 Flask 6
1.3.2 Django 6
1.3.3 Tornado 6
1.4 搭建Web開發環境 6
1.4.1 創建虛擬環境 6
1.4.2 pip包管理工具 7
1.4.3 切換鏡像源 9
第2章 前端基礎
2.1 HTML基礎 12
2.1.1 HTML簡介 12
【實例2.1】 個HTML頁面 12
2.1.2 標籤和元素 13
2.1.3 表單 15
2.2 CSS基礎 18
2.2.1 基礎知識 18
2.2.2 嵌入CSS樣式 19
【實例2.2】添加CSS樣式 19
【實例2.3】使用外部樣式表 21
2.3 JavaScript基礎 21
2.3.1 基本語法 21
2.3.2 使用JavaScript 23
【實例2.4】彈出對話框 23
【實例2.5】使用外部JavaScript文件方式修改實例2.4 24
2.4 jQuery基礎 24
2.4.1 使用jQuery 25
2.4.2 基本語法 25
2.4.3 選擇器 26
【實例2.6】隱藏
標籤 26
2.4.4 觸發事件 28
2.4.5 內容和屬性 29
【實例2.7】檢測用戶填寫的用戶名和密碼是否符合要求 29
2.5 Bootstrap框架 31
2.5.1 安裝Bootstrap 31
2.5.2 基本使用 32
【實例2.8】創建一個全屏幕宣傳頁面 32
2.6 綜合案例——導航欄菜單 33
2.7 實戰練習 34
第3章 MySQL的使用
3.1 MySQL的安裝及配置 36
3.1.1 MySQL簡介 36
3.1.2 安裝MySQL 36
3.1.3 配置MySQL 37
3.2 庫的相關操作 38
3.2.1 創建數據庫 38
3.2.2 查看數據庫 39
3.2.3 刪除數據庫 39
3.3 表的相關操作 40
3.3.1 創建數據表 40
3.3.2 查看數據表 41
3.3.3 修改表結構 42
3.3.4 刪除數據表 42
3.4 數據類型 43
3.4.1 數字類型 43
3.4.2 字符串類型 44
3.4.3 日期和時間類型 45
3.5 數據的增查改刪 45
3.5.1 增加數據 45
3.5.2 查詢數據 46
3.5.3 修改數據 49
3.5.4 刪除數據 49
3.6 PyMySQL操作數據庫 50
3.6.1 安裝PyMySQL 50
3.6.2 連接數據庫 50
3.6.3 游標對象 51
【實例3.1】向mrsoft數據庫中添加books圖書表 52
3.6.4 操作數據庫 53
【實例3.2】向books圖書表中添加圖書數據 53
3.7 ORM模型 54
3.7.1 ORM簡介 54
3.7.2 常用的ORM庫 55
3.8 綜合案例——從數據庫查詢並篩選數據 55
3.8.1 設計SQL 55
3.8.2 實現過程 55
3.9 實戰練習 56
第2篇 Flask框架實戰篇
第4章 Flask快速應用
4.1 Flask基礎 59
4.1.1 Flask簡介 59
4.1.2 安裝Flask 59
4.2 使用Flask輸出Hello World! /?60
4.2.1 個Flask程序 60
【實例4.1】輸出Hello World! 60
4.2.2 開啟debug 60
4.3 路由 61
4.3.1 變量規則 61
【實例4.2】根據不同的用戶名參數,輸出相應的用戶信息 61
4.3.2 構造URL 62
4.3.3 HTTP 方法 62
4.3.4 靜態文件 63
4.4 綜合案例——模擬登錄 63
4.5 實戰練習 64
第5章 Flask的請求與響應
5.1 請求參數 66
5.1.1 GET請求 66
【實例5.1】獲取GET請求參數 66
5.1.2 POST請求 67
【實例5.2】獲取表單提交信息 67
5.2 文件上傳 68
【實例5.3】實現上傳用戶圖片功能 68
5.3 鉤子函數的應用 70
【實例5.4】使用請求鉤子,在執行視圖函數前後執行相應的函數 71
5.4 接收響應 72
5.5 響應的格式 72
5.5.1 MIME類型 72
5.5.2 JSON數據 73
5.6 Flask會話 73
5.6.1 Cookie對象 74
【實例5.5】使用Cookie判斷用戶是否登錄 74
5.6.2 Session對象 76
5.7 綜合案例——用戶登錄 77
5.8 實戰練習 77
第6章 Jinja2模板引擎
6.1 Flask使用Jinja2模板引擎 80
6.1.1 Jinja2簡介 80
6.1.2 渲染模板 80
【實例6.1】渲染首頁模板 80
6.2 模板中傳遞參數 82
6.3 模板的控制語句 83
6.3.1 if語句 83
6.3.2 for語句 83
6.3.3 模板上下文 83
【實例6.2】使用Session判斷用戶是否登錄 84
6.4 Jinja2的過濾器 85
6.4.1 常用的過濾器 85
6.4.2 自定義過濾器 85
【實例6.3】Flask應用對象的add_template_filter方法定義過濾器 85
【實例6.4】使用app.template_filter()裝飾器定義過濾器 86
6.5 宏的應用 87
6.5.1 宏的定義 87
6.5.2 宏的導入 87
6.5.3 include的使用 87
6.6 模板的繼承 87
【實例6.5】使用子模板繼承父模板 88
6.7 提示信息 90
【實例6.6】使用flash閃現用戶登錄成功或失敗的消息 90
6.8 綜合案例——自定義錯誤頁面 91
6.8.1 需求分析 92
6.8.2 實現過程 92
6.9 實戰練習 93
第7章 Flask視圖與藍圖
7.1 綁定視圖函數 95
7.1.1 使用app.route 95
7.1.2 使用add_url_rule 95
7.2 類視圖 96
7.2.1 標準類視圖 96
7.2.2 基於調度方法的類視圖 98
7.3 裝飾器 99
7.3.1 裝飾器的定義 99
7.3.2 基本應用 99
7.3.3 帶參函數使用裝飾器 101
7.4 藍圖 102
7.4.1 簡介 103
7.4.2 使用藍圖 103
【實例7.1】使用藍圖創建前台和後台應用 103
7.5 表單 104
7.5.1 CSRF 104
7.5.2 表單類 105
7.6 綜合案例——驗證用戶登錄 106
7.7 實戰練習 108
第8章 Flask操作數據庫
8.1 常用擴展 110
8.1.1 Flask-SQLAlchemy擴展 110
8.1.2 Flask-Migrate擴展 112
8.1.3 Flask-Script擴展 114
8.2 管理數據庫 117
8.2.1 連接數據庫 117
8.2.2 定義數據模型 118
8.2.3 定義關係 119
8.3 增查改刪 121
8.3.1 創建數據 121
8.3.2 讀取數據 121
8.3.3 更新數據 123
8.3.4 刪除數據 123
8.4 綜合案例——創建數據表 123
8.4.1 案例說明 123
8.4.2 實現案例 123
8.5 實戰練習 125
第9章 【案例】Flask_SQLAlchemy篩選網易云免費課程
9.1 案例效果預覽 126
9.2 案例準備 127
9.3 業務流程 127
9.4 實現過程 127
9.4.1 創建數據表 128
9.4.2 設置過濾器 129
9.5 關鍵技術 132
第10章 【案例】Splitlines解析數據庫文本中的換行內容
10.1 案例效果預覽 134
10.2 案例準備 134
10.3 業務流程 135
10.4 實現過程 135
10.4.1 項目結構 135
10.4.2 安裝模塊 135
10.4.3 連接數據庫 135
10.4.4 業務邏輯 136
10.4.5 創建父模板 136
10.4.6 創建詳情文件 137
10.5 關鍵技術 138
第11章 【案例】Flask_Login用戶登錄校驗
11.1 案例效果預覽 139
11.2 案例準備 140
11.3 業務流程 140
11.4 實現過程 140
11.4.1 登錄與權限校驗 140
11.4.2 更改密碼 145
11.4.3 登錄成功後的處理 148
11.5 關鍵技術 150
第12章 【案例】ECharts顯示折線圖
12.1 案例效果預覽 153
12.2 案例準備 153
12.3 業務流程 154
12.4 實現過程 154
12.4.1 安裝依賴 154
12.4.2 連接數據庫 154
12.4.3 業務邏輯 155
12.4.4 渲染頁面 155
12.5 關鍵技術 160
第13章 【案例】員工信息審核
13.1 案例效果預覽 161
13.2 案例準備 162
13.3 業務流程 162
13.4 實現過程 162
13.5 關鍵技術 166
第14章 【案例】網頁底部Tab欄設計
14.1 案例效果預覽 167
14.2 案例準備 167
14.3 業務流程 168
14.4 實現過程 168
14.4.1 設置路由 168
14.4.2 創建父模板 168
14.4.3 繼承父模板 169
14.5 關鍵技術 170
第15章 【案例】多條件查詢的使用
15.1 案例效果預覽 171
15.2 案例準備 172
15.3 業務流程 172
15.4 實現過程 172
15.4.1 概述 172
15.4.2 篩選酒店信息 173
15.4.3 學生選課系統 175
15.5 關鍵技術 176
第3篇 Django框架實戰篇
第16章 Django快速應用
16.1 使用Django框架 179
16.1.1 新版本特性 179
16.1.2 安裝Django 179
16.2 個Django項目 179
【實例16.1】使用命令行創建項目 179
16.3 創建Django應用 180
16.4 URL組成部分 182
16.5 路由 182
16.5.1 路由形式 182
【實例16.2】定義路由並創建路由函數 183
16.5.2 include的使用 184
16.6 管理後台 185
16.7 綜合案例——Hello Django 187
16.8 實戰練習 189
第17章 Django模板引擎
17.1 DTL介紹 191
17.1.1 DTL簡介 191
17.1.2 渲染模板 191
【實例17.1】創建並渲染模板 191
17.1.3 模板路徑 193
17.2 模板變量 193
17.3 常用標籤 194
17.4 過濾器 197
17.4.1 常用過濾器 197
17.4.2 自定義過濾器 199
17.5 簡化模板 200
17.5.1 引入模板 200
17.5.2 繼承模板 201
17.6 加載靜態文件 202
17.7 綜合案例——時間過濾器 202
17.8 實戰練習 204
第18章 Django視圖與表單
18.1 視圖簡介 206
18.1.1 視圖函數 206
【實例18.1】創建獲取當前日期的視圖函數 206
18.1.2 視圖類 206
18.2 請求裝飾器 210
18.3 請求與響應 210
18.3.1 請求對象 211
18.3.2 響應對象 211
18.4 重定向 212
18.5 自定義錯誤頁面 213
18.6 使用表單 214
18.6.1 表單的基本使用 214
18.6.2 驗證數據 215
18.7 ModelForm 217
18.7.1 使用方法 217
18.7.2 字段類型 219
18.7.3 表單驗證 220
18.7.4 save()方法 221
18.7.5 字段選擇 222
18.8 文件上傳 222
18.9 綜合案例——用戶註冊 224
18.10 實戰練習 226
第19章 Django模型與數據庫
19.1 數據庫操作 228
19.2 ORM模型 228
19.2.1 添加數據模型 229
19.2.2 數據遷移 230
19.2.3 數據API 231
19.3 多關聯模型 233
19.3.1 一對一 233
19.3.2 多對一 235
19.3.3 多對多 238
19.4 定制管理後台 241
19.4.1 ModelAdmin.fields 241
19.4.2 ModelAdmin.fieldset 242
19.4.3 ModelAdmin.list_display 244
19.4.4 ModelAdmin.list_display_links 246
19.4.5 ModelAdmin.list_editable 246
19.4.6 ModelAdmin.list_filter 247
19.5 綜合案例——使用模型操作數據庫 250
19.6 實戰練習 252
第20章 Django緩存
20.1 Session會話 254
20.1.1 啟用會話 254
20.1.2 配置會話引擎 254
20.1.3 常用方法 255
20.1.4 自動登錄 256
【實例20.1】使用會話實現登錄功能 256
20.1.5 退出登錄 259
20.2 Memcached緩存系統 259
20.3 Redis數據庫 261
20.4 用戶權限 263
20.4.1 用戶對象 264
20.4.2 權限和分組 266
20.5 綜合案例——登錄驗證 268
20.6 實戰練習 268
第21章 【案例】Celery異步發送驗證郵件
21.1 案例效果預覽 269
21.2 案例準備 269
21.3 業務流程 270
21.4 實現過程 270
21.4.1 數據遷移 270
21.4.2 郵箱配置 271
21.4.3 設置路由 272
21.4.4 前端頁面 272
21.4.5 業務邏輯 273
21.4.6 異步任務 274
21.4.7 啟動項目 275
21.5 關鍵技術 275
第22章 【案例】自定義Admin命令
22.1 案例效果預覽 276
22.2 案例準備 276
22.3 業務流程 277
22.4 實現過程 277
22.4.1 定義命令 277
22.4.2 項目日誌 278
22.5 關鍵技術 281
第23章 【案例】Channels實現Web Socket聊天室
23.1 案例效果預覽 282
23.2 案例準備 283
23.3 業務流程 283
23.4 實現過程 283
23.4.1 安裝Channels 283
23.4.2 創建APP 284
23.4.3 配置模板 284
23.4.4 添加路由 285
23.4.5 配置Channels路由 285
23.4.6 完成WebSocket 287
23.4.7 升級為異步執行 287
23.5 關鍵技術 290
第24章 【案例】Paginator實現數據分頁
24.1 案例效果預覽 291
24.2 案例準備 291
24.3 業務流程 292
24.4 實現過程 292
24.4.1 添加路由 292
24.4.2 分頁邏輯 292
24.4.3 渲染模板 293
24.4.4 運行程序 294
24.5 關鍵技術 294
第25章 【案例】Ajax多級下拉框聯動
25.1 案例效果預覽 296
25.2 案例準備 296
25.3 業務流程 296
25.4 實現過程 297
25.4.1 匹配路由 297
25.4.2 添加模板 297
25.4.3 業務邏輯 298
25.4.4 關閉CSRF防護 298
25.5 關鍵技術 299
第26章 【案例】Haystack站內全局搜索引擎
26.1 案例效果預覽 301
26.2 案例準備 301
26.3 業務流程 302
26.4 實現過程 302
26.4.1 準備環境 302
26.4.2 註冊模塊 302
26.4.3 配置搜索引擎 303
26.4.4 業務邏輯 304
26.4.5 渲染模板 304
26.5 關鍵技術 306
第27章 【案例】Message消息提示
27.1 案例效果預覽 307
27.2 案例準備 307
27.3 業務流程 307
27.4 實現過程 308
27.4.1 配置文件 308
27.4.2 消息引擎 309
27.4.3 添加路由 309
27.4.4 業務邏輯 309
27.4.5 渲染模板 310
27.5 關鍵技術 311
第4篇 項目強化篇
第28章 基於Flask框架的51商城
28.1 系統需求分析 314
28.2 系統功能設計 314
28.2.1 系統功能結構 314
28.2.2 系統業務流程 314
28.2.3 系統預覽 315
28.3 系統開發備 319
28.3.1 系統開發環境 319
28.3.2 文件夾組織結構 319
28.4 數據庫設計 320
28.4.1 數據庫概要說明 320
28.4.2 數據表模型 320
28.4.3 數據表關係 322
28.5 會員註冊模塊設計 323
28.5.1 會員註冊模塊概述 323
28.5.2 會員註冊頁面 323
28.5.3 驗證並保存註冊信息 327
28.6 會員登錄模塊設計 328
28.6.1 會員登錄模塊概述 328
28.6.2 創建會員登錄頁面 328
28.6.3 保存會員登錄狀態 331
28.6.4 會員退出功能 331
28.7 首頁模塊設計 332
28.7.1 首頁模塊概述 332
28.7.2 顯示#新上架商品 333
28.7.3 顯示打折商品 334
28.7.4 顯示熱門商品 335
28.8 購物車模塊 336
28.8.1 購物車模塊概述 336
28.8.2 顯示商品詳細信息 336
28.8.3 添加購物車 338
28.8.4 查看購物車 339
28.8.5 保存訂單 340
28.8.6 查看訂單 341
28.9 後台功能模塊設計 341
28.9.1 後台登錄模塊設計 341
28.9.2 商品管理模塊設計 342
28.9.3 銷量排行榜模塊設計 343
28.9.4 會員管理模塊設計 343
28.9.5 訂單管理模塊設計 344
第29章 基於Django框架的綜藝之家管理系統
29.1 系統需求分析 346
29.1.1 系統概述 346
29.1.2 系統可行性分析 346
29.1.3 系統用戶角色分配 346
29.1.4 功能性需求分析 347
29.1.5 非功能性需求分析 347
29.2 系統功能設計 347
29.2.1 系統功能結構 347
29.2.2 系統業務流程 347
29.2.3 系統預覽 348
29.3 系統開發備 349
29.3.1 系統開發環境 349
29.3.2 文件夾組織結構 350
29.4 數據庫設計 350
29.4.1 數據庫概要說明 350
29.4.2 數據表模型 350
29.4.3 數據表關係 352
29.5 綜藝管理模塊設計 352
29.5.1 實現後台錄入綜藝信息和綜藝視頻的功能 353
29.5.2 前台首頁功能 354
29.5.3 綜藝詳情頁功能 356
29.6 搜索功能模塊設計 359
29.7 分類功能模塊設計 361
29.8 社交管理模塊設計 364
29.8.1 安裝django-spirit模塊 364
29.8.2 發帖和回帖功能 365
29.8.3 論壇管理後台功能 366
29.9 可視化展示模塊設計 367
29.9.1 ECharts開源可視化圖表庫基本使用 367
29.9.2 AJAX異步加載圖表數據 369
第30章 Web項目部署
30.1 常見的部署方式 374
30.1.1 WSGI 374
30.1.2 Gunicorn 374
30.1.3 Nginx 374
30.1.4 supervisor 375
30.2 雲服務器配置 375
30.2.1 常用的雲服務器 375
30.2.2 pip包管理工具 377
30.2.3 虛擬環境 378
30.3 使用Gunicorn 379
30.3.1 使用參數啟動Gunicorn 379
30.3.2 加載配置文件啟動Gunicorn 381
30.4 使用Nginx 381
30.4.1 安裝Nginx 381
30.4.2 Nginx的啟停 382
30.4.3 配置文件 382
30.4.4 靜態文件 383
30.4.5 代理服務器 383
30.5 使用supervisor 384
30.5.1 配置文件 385
30.5.2 常用命令 386
30.5.3 啟動程序 386
附錄
附錄1 Flask框架常用類和函數 388
附錄2 Flask框架請求對象提供的常用屬性或方法 388
附錄3 Flask框架響應對象提供的屬性或方法 389
附錄4 Flask框架常用擴展 389
附錄5 Django框架常用命令 389
附錄6 Django框架setting.py常用配置 390
附錄7 Django框架ORM常用API 390
作者介紹
明日科技
是一家以軟件開發和教育為主的高科技公司,為國家高新技術企業和雙軟認證企業。
開發的系統有鐵路多媒體查詢系統、長春電子地圖、天氣預報系統、礦山瓦斯報警系統等軟件產品。
開發的圖書有《程序開發範例寶典》、《軟件開發視頻大講堂》、《軟件開發1200例》、
《零基礎學系列》、《項目開發實戰入門》等多個系列圖書,多個品種榮獲“全行業**暢銷書”獎項,
《軟件開發視頻大講堂》、《零基礎學系列》系列是目前市場上暢銷的專業基礎編程類叢書。