Flask Web 全棧開發實戰

Flask Web 全棧開發實戰

作者: 黃勇
出版社: 清華大學
出版在: 2022-07-01
ISBN-13: 9787302609285
ISBN-10: 7302609284





內容描述


《Flask Web全棧開發實戰》圍繞 Flask 框架,詳細地講解了使用 Flask 開發網站的各項技術要點。全書共 11 章,首先講解了 Flask 項目開發中的環境搭建、項目配置、URL 與視圖、Jinja2 模板、數據庫、表單、Flask 進階、緩存系 統等。然後拓展了知識面,在項目實戰中分別介紹了 RESTful API、郵箱驗證碼、Redis 緩存、Celery 異 步任務、登錄授權機制、角色權限管理、富文本編輯器、頭像管理、文件上傳以及 Nginx、Gunicorn 部署 等技術要點;在 WebSocket 實戰中講解了 Flask 中使用 WebSocket 開發項目的全部過程。最後講解了 Flask 異步編程。通過《Flask Web全棧開發實戰》的學習,讀者能夠熟練掌握 Flask Web 開發技術。 《Flask Web全棧開發實戰》適合沒有 Flask 開發經驗或者 Flask 基礎比較薄弱、想要系統學習 Flask Web 開發技術的讀者 學習。


目錄大綱


目  錄
 
 
第1章  Flask前奏 1
1.1  Flask簡介 1
1.2  環境搭建 1
1.2.1  Python環境 2
1.2.2  Flask版本 3
1.2.3  開發軟件 4
第2章  項目配置 9
2.1  Debug模式、Host、Port配置 9
2.1.1  Debug模式 9
2.1.2  設置Host和Port 13
2.2  在app.config中添加配置 18
2.2.1  使用app.config配置 18
2.2.2  使用Python配置文件 19
第3章  URL與視圖 20
3.1  定義URL 21
3.1.1  定義無參數的URL 22
3.1.2  定義有參數的URL 22
3.2  HTTP請求方法 27
3.3  頁面重定向 29
3.4  構造URL 30
第4章  Jinja2模板 32
4.1  模板的基本使用 32
4.1.1  渲染模板 32
4.1.2  渲染變量 34
4.2  過濾器和測試器 38
4.2.1  自定義過濾器 38
4.2.2  Jinja2內置過濾器 39
4.2.3  測試器 42
4.3  控制語句 44
4.3.1  if判斷語句 44
4.3.2  for循環語句 45
4.4  模板結構 51
4.4.1  宏和import語句 51
4.4.2  模板繼承 52
4.4.3  引入模板 54
4.5  模板環境 55
4.5.1  模板上下文 55
4.5.2  全局函數 56
4.5.3  Flask模板環境 57
4.6  其他 58
4.6.1  轉義 58
4.6.2  加載靜態文件 59
4.6.3  閃現消息 59
第5章  數據庫 61
5.1  準備工作 61
5.1.1  MySQL軟件 61
5.1.2  Python操作MySQL驅動 61
5.1.3  Flask-SQLAlchemy 62
5.2  Flask-SQLAlchemy的基本使用 62
5.2.1  連接MySQL 62
5.2.2  ORM模型 63
5.2.3  CRUD操作 66
5.3  表關系 70
5.3.1  外鍵 71
5.3.2  一對多關系 71
5.3.3  一對一關系 74
5.3.4  多對多關系 75
5.3.5  級聯操作 77
5.4  ORM模型遷移 80
5.4.1  創建遷移對象 80
5.4.2  初始化遷移環境 81
5.4.3  生成遷移腳本 81
5.4.4  執行遷移腳本 81
第6章  表單 83
6.1  表單驗證 83
6.1.1  表單類編寫 85
6.1.2  視圖函數中使用表單 87
6.1.3  自定義驗證字段 89
6.2  渲染表單模板 90
6.3  CSRF攻擊 93
第7章  Flask進階 98
7.1  類視圖 98
7.1.1  基本使用 98
7.1.2  方法限制 99
7.1.3  基於方法的類視圖 100
7.1.4  添加裝飾器 101
7.2  藍圖 101
7.2.1  基本使用 101
7.2.2  尋找模板 102
7.2.3  尋找靜態文件 102
7.3  cookie和session 103
7.3.1  關於cookie和session的介紹 103
7.3.2  Flask中使用cookie和session 104
7.4  request對象 105
7.5  Flask信號機制 106
7.5.1  自定義信號 106
7.5.2  Flask內置信號 107
7.6  常用鉤子函數 108
7.7  上下文 109
7.7.1  線程隔離對象 110
7.7.2  LocalStack類 111
7.7.3  LocalProxy類 114
第8章  緩存系統 117
8.1  Memcached 117
8.1.1  安裝Memcached 117
8.1.2  telnet操作Memcached 118
8.1.3  Python操作Memcached 121
8.1.4  Memcached的安全性 122
8.2  Redis 122
8.2.1  Redis使用場景 122
8.2.2  Redis和Memcached比較 123
8.2.3  Redis在Ubuntu中的安裝與
使用 123
8.2.4  Redis操作命令 125
8.2.5  同步數據到硬盤 130
8.2.6  設置密碼 131
8.2.7  Python操作Redis 132
第9章  項目實戰 134
9.1  創建項目 135
9.1.1  config.py文件 137
9.1.2  exts.py文件 139
9.1.3  blueprints模塊 140
9.1.4  models模塊 142
9.2  創建用戶相關模型 143
9.2.1  創建權限和角色模型 143
9.2.2  創建權限和角色 146
9.2.3  創建用戶模型 150
9.2.4  創建測試用戶 154
9.2.5  創建管理員 155
9.3  註冊 155
9.3.1  渲染註冊模板 155
9.3.2  使用Flask-Mail發送郵箱驗證碼 160
9.3.3  使用Flask-Caching和Redis緩存
驗證碼 165
9.3.4  使用Celery發送郵件 167
9.3.5  RESTful API 170
9.3.6  CSRF保護 173
9.3.7  使用AJAX獲取郵箱驗證碼 173
9.3.8  實現註冊功能 176
9.4  登錄 179
9.5  發布帖子 182
9.5.1  添加帖子相關模型 183
9.5.2  初始化板塊數據 184
9.5.3  渲染發布帖子模板 184
9.5.4  使用wangEditor富文本編輯器 186
9.5.5  未登錄限制 191
9.5.6  服務端實現發帖功能 193
9.5.7  使用AJAX發布帖子 194
9.6  首頁 195
9.6.1  生成帖子測試數據 197
9.6.2  使用Flask-Paginate實現分頁 198
9.6.3  過濾帖子 200
9.7  帖子詳情 202
9.7.1  動態加載帖子詳情數據 202
9.7.2  發布評論 203
9.8  個人中心 205
9.8.1  使用Flask-Avatars生成隨機
頭像 206
9.8.2  修改導航條上的登錄狀態 209
9.8.3  根據用戶顯示個人中心 210
9.8.4  修改用戶信息 212
9.9  CMS管理系統 215
9.9.1  CMS入口 215
9.9.2  權限管理 216
9.9.3  員工管理頁面 219
9.9.4  添加員工 221
9.9.5  編輯員工 223
9.9.6  管理前臺用戶 225
9.9.7  帖子管理 228
9.9.8  評論管理 230
9.9.9  板塊管理 231
9.10  錯誤處理 231
9.11  日誌 233
9.11.1  loggers模塊 233
9.11.2  handlers模塊 234
9.11.3  filters模塊 235
9.11.4  formatters模塊 236
9.12  部署 237
9.12.1  導出依賴包 237
9.12.2  使用Git上傳代碼 237
9.12.3  生產環境的配置 241
9.12.4  安裝常用軟件 241
9.12.5  配置網站 243
9.12.6  使用Gunicorn部署網站 244
9.12.7  使用Nginx部署網站 246
9.12.8  壓力測試                 249
第10章  WebSocket實戰 252
10.1  安裝相應的包 253
10.2  創建SocketIO對象 253
10.3  實現登錄 254
10.4  連接和取消連接 257
10.5  獲取在線用戶 258
10.6  實現單聊 259
10.7  實現群聊 260
10.8  部署項目 261
第11章  Flask異步編程 263
11.1  asyncio標準庫 263
11.2  aiohttp庫 265
11.3  異步版Flask安裝與異步編程
性能 266
11.3.1  安裝異步版Flask 266
11.3.2  Flask異步編程性能 266
11.3.3  實戰—異步發送HTTP請求 267
11.3.4  使用異步SQLAlchemy 269
11.3.5  Jinja2開啟異步支持 271




相關書籍

JavaScript & jQuery: The Missing Manual, 3/e (國際中文版)

作者 David Sawyer McFarland 楊尊一 譯

2022-07-01

Pro Apache Hadoop, 2/e (Paperback)

作者 Jason Venner Sameer Wadkar Madhu Siddalingaiah

2022-07-01

Node.js in Action, 2/e (Paperback)

作者 Alex R. Young Bradley Meck Mike Cantelon Tim Oxley Marc Harter TJ Holowaychuk Nathan Rajlich

2022-07-01