Django 5+Vue:Python Web全棧開發
馮春龍、楊柳
相關主題
商品描述
《Django 5+Vue:Python Web全棧開發》是實用性很強的 Django 5+Vue 3全棧開發指南,旨在為 Web 應用的設計、開發和部署過程提供全面的指導。作者結合多年的實戰經驗,深入探討作為一名全棧工程師必備的核心技能,包括掌握後端開發、前端開發、RESTful API設計、數據庫操作、認證授權、性能優化、Docker 部署等方面的技術。本書結合多個實戰項目案例,深入解析各個知識點,幫助讀者輕松地理解 Django和 Vue,並掌握其在真實應用場景中的使用方法、技巧以及工作原理。通過學習本書,讀者可以熟練運用這些知識構建現代化的 Web應用,提高自身的開發能力和職場競爭力。
作者簡介
"馮春龍高級軟件工程師,網易雲課堂「年度名師榜·摯愛名師」。大熊課堂聯合創始人,擁有10多年一線開發與教學經驗,曾在中國銀行負責數據采集服務項目。“用動畫學編程”的推廣者。將抽象的技術知識變得生動、有趣、易於理解。多年來專註於讓編程學習更高效、更有趣,深受學員喜愛。著有多本暢銷編程教材,包括《零基礎學Python》《零基礎學PHP》《Python Web開發從入門到實踐》等。楊柳高級產品經理,教育領域深耕10年。大熊課堂聯合創始人,專註於編程教育與課程研發。長期致力於將復雜的技術知識以清晰、系統、可實踐的方式呈現給學習者。曾打造出多個爆款視頻教程。近年來專註於Python與Django技術的教學與實戰項目開發,具備豐富的一線教學與產品設計經驗。秉持“讓學習變得更簡單、更高效”的理念,致力於用教育的方式傳播技術之美。"
目錄大綱
目錄
第1章 開啟Django 5.0之旅 1
1.1 什麼是 Web 框架 1
1.2 什麼是 Django 2
1.2.1 Django 的核心特點 2
1.2.2 Django 的架構 2
1.2.3 Django 的關鍵組件 3
1.2.4 Django 的使用案例 3
1.3 準備開發環境 4
1.4 虛擬環境下安裝 Django 5 5
1.4.1 為什麼使用虛擬環境 5
1.4.2 創建虛擬環境 5
1.4.3 啟動虛擬環境 6
1.4.4 安裝 Django 5 7
1.5 創建 Django 項目 7
1.5.1 Django 常見命令 8
1.5.2 創建項目 8
1.5.3 關閉服務 9
第2章 Django框架從0到1 10
2.1 Django 的 MVT 模式 10
2.2 Django 項目中創建應用的步驟 11
2.2.1 什麼是 Django 應用 12
2.2.2 創建 Django 應用 12
2.2.3 輸出第一個程序 13
2.3 什麼是 Django 的路由 14
2.4 路由匹配模式 1:精確字符串格式 15
2.5 路由匹配模式 2:路徑轉換器格式 16
2.5.1 定義動態路由 17
2.5.2 定義視圖函數 17
2.5.3 驗證路由 18
2.5.4 添加更多動態變量 18
2.5.5 常見 Django 路徑轉換器類型 19
2.6 路由匹配模式 3:路由嵌套模式 19
2.6.1 創建應用的路由文件 20
2.6.2 全局引入應用的路由文件 20
2.6.3 驗證配置 20
第3章 深入探索Django視圖 22
3.1 基於函數視圖實現登錄功能 22
3.1.1 什麼是函數視圖 22
3.1.2 創建 account 應用 23
3.1.3 創建模板 24
3.1.4 配置模板路徑 24
3.1.5 編寫登錄業務邏輯 25
3.2 基於類視圖實現註冊功能 26
3.2.1 類視圖定義 get()方法 26
3.2.2 配置註冊路由 27
3.2.3 創建註冊模板頁面 27
3.2.4 實現 POST 請求 28
3.2.5 類視圖與函數視圖的對比 28
3.3 HttpRequest 請求對象 28
3.3.1 請求對象的組成部分 29
3.3.2 請求標頭的內容 29
3.3.3 HttpRequest 屬性獲取 META信息 29
3.3.4 使用 HttpRequest.headers 獲取請求標頭 31
3.4 獲取 6 種不同形式的參數 32
3.4.1 獲取 GET 請求參數 32
3.4.2 獲取 POST 請求參數 32
3.4.3 獲取 URL 參數 34
3.4.4 獲取 JSON 參數 34
3.4.5 獲取路徑參數 34
3.4.6 獲取請求標頭參數 35
3.5 HttpResponse 響應對象 35
3.5.1 HttpResponse 35
3.5.2 JsonResponse 37
第4章 Django模板的藝術 39
4.1 Django 模板引擎和配置 39
4.1.1 模板的主要內容 39
4.1.2 模板引擎和配置 40
4.1.3 在應用中配置模板 41
4.1.4 模板優先級 42
4.2 模板中的變量 42
4.2.1 app01 應用創建文章列表 43
4.2.2 模板中傳遞字符串、數字變量 44
4.2.3 模板中傳遞列表類型變量 44
4.2.4 模板中傳遞字典類型變量 45
4.3 模板循環和判斷標簽 47
4.3.1 循環控制標簽 47
4.3.2 遍歷列表或元組 47
4.3.3 遍歷字典 48
4.3.4 重復循環 48
4.3.5 條件控制標簽 50
4.4 Django 模板過濾器 52
4.4.1 模板過濾器語法 52
4.4.2 upper 過濾器 52
4.4.3 default 過濾器 52
4.4.4 truncatechars 過濾器 53
4.4.5 random 過濾器 53
4.4.6 safe 過濾器 54
4.5 Django 模板的繼承與包含 55
4.5.1 創建父模板 56
4.5.2 子模板繼承父模板 56
4.5.3 include 模板引入 57
第5章 輕松掌握Django模型 59
5.1 什麼是 ORM 59
5.1.1 為什麼要使用 ORM 59
5.1.2 ORM 的基本概念 59
5.1.3 ORM 的實際應用 60
5.2 連接 MySQL 數據庫 61
5.2.1 配置 MySQL 數據庫 61
5.2.2 創建 MySQL 數據庫 62
5.2.3 安裝並配置 PyMySQL 63
5.2.4 執行數據庫遷移 63
5.2.5 啟動 Django 服務器 64
5.3 創建模型 64
5.3.1 安裝應用 65
5.3.2 創建 User 模型 65
5.3.3 ORM 常用字段類型及其對應類表 65
5.3.4 創建文章模型 66
5.3.5 數據庫遷移 67
5.4 執行模型遷移 68
5.4.1 自定義數據庫表名 68
5.4.2 執行遷移操作 69
5.4.3 創建通用基類管理公共字段 69
5.4.4 定義抽象基類 69
5.4.5 在其他模型中使用抽象基類 70
5.4.6 生成和執行遷移文件 70
5.5 ORM 新增數據 71
5.5.1 使用 save()方法新增數據 72
5.5.2 使用 create()方法新增數據 72
5.5.3 使用 bulk_create()方法批量新增數據 73
5.5.4 表關聯的使用 73
5.6 ORM 查詢數據 75
5.6.1 all()方法查詢所有用戶 75
5.6.2 get()方法根據條件查詢單條記錄 76
5.6.3 filter()方法匹配查詢條件的模型對象列表 77
5.6.4 first()方法和 last()方法查詢最晚和最早的一條記錄 77
5.7 ORM 查詢條件 78
5.7.1 相等、等於 78
5.7.2 比較條件 78
5.7.3 isnull 判斷 79
5.7.4 包含某些字符 79
5.7.5 以某些字符開頭或結尾 79
5.7.6 日期和時間 80
5.7.7 外鍵關聯 80
5.8 ORM 多條件查詢 81
5.9 ORM 數據修改方法 82
5.9.1 save()方法修改單條記錄 82
5.9.2 update()方法批量修改數據 83
5.9.3 更改關聯表的數據 83
5.10 ORM 刪除數據 84
5.10.1 常見的刪除方式 84
5.10.2 刪除數據 85
第6章 全面管理Django後臺 87
6.1 註冊 Django 後臺模型 87
6.1.1 創建管理員用戶 87
6.1.2 登錄 Django 後臺 88
6.1.3 配置中文界面和時區 88
6.1.4 後臺添加用戶模型 89
6.1.5 後臺進行增刪改查 89
6.1.6 配置過濾字段和搜索功能 92
6.1.7 配置文章應用 92
6.1.8 添加和管理文章 93
6.2 Django 後臺常用配置介紹 94
6.2.1 修改應用名稱 94
6.2.2 修改模型名稱的復數形式 95
6.2.3 設置後臺屬性 96
6.2.4 配置可單擊的鏈接 96
6.2.5 設置列表頁直接修改 97
6.3 完善管理後臺設置函數 98
6.3.1 展示文章作者 98
6.3.2 文章詳情頁顯示作者 100
第7章 Django框架實戰項目:開發企業官網 102
7.1 需求分析 102
7.2 創建項目和應用 103
7.2.1 創建企業官網項目 103
7.2.2 創建 4 個應用 104
7.2.3 配置路由與視圖:輸出第一個“hello world” 104
7.3 配置企業官網數據庫 105
7.3.1 安裝並配置 PyMySQL 105
7.3.2 使用數據庫可視化軟件創建數據庫 105
7.3.3 執行數據庫遷移 106
7.4 創建幻燈片模型 107
7.4.1 創建 Slide 模型類 107
7.4.2 安裝 Pillow 模塊 108
7.4.3 註冊模型到後臺 108
7.4.4 添加幻燈片 109
7.5 幻燈片效果前端顯示 110
7.5.1 在視圖文件中獲取數據庫數據 110
7.5.2 修改模板文件顯示動態數據 110
7.5.3 配置 URL 以顯示媒體文件 111
7.6 團隊介紹模塊實現 112
7.6.1 創建團隊模型 112
7.6.2 註冊團隊模型到後臺管理 113
7.6.3 顯示團隊成員數據 114
7.7 文章管理模塊實現 115
7.7.1 創建分類與新聞模型 115
7.7.2 註冊分類與新聞模型到後臺 116
7.8 新聞列表頁和詳情頁模塊實現 117
7.8.1 配置 URL 路徑 117
7.8.2 創建視圖函數和模板文件 117
7.8.3 處理 404 頁面 119
7.9 使用富文本編輯器 120
7.9.1 安裝與配置 CKEditor 120
7.9.2 修改模型以支持 CKEditor 120
7.9.3 編輯與展示富文本內容 121
第8章 初識Vue 3 123
8.1 Vue的基礎 123
8.2 Vue 的組件化開發 123
8.3 安裝 Vue 124
8.3.1 安裝 Node.js 124
8.3.2 什麼是 NPM 125
8.3.3 安裝 Vue.js 126
8.4 初始化項目 127
8.4.1 項目初始化命令 127
8.4.2 項目目錄結構 127
8.5 使用 Vite 工具安裝 Tailwind CSS 132
8.6 Vue 基礎概念與 Todo 應用 135
8.6.1 Vue 實例與數據綁定 135
8.6.2 列表渲染和條件渲染 136
8.6.3 使用計算屬性計算完成數量 138
8.7 表單處理和添加 Todo 輸入框 140
8.8 組件與通信 143
8.8.1 TodoItem 組件 143
8.8.2 TodoList 組件 144
8.8.3 TodoStats 組件 145
8.8.4 App.vue 根組件 147
8.9 監聽器和本地存儲 148
8.9.1 計算屬性統計各項任務數量 149
8.9.2 監聽和存儲數據 151
第9章 Vue 3開發菜譜網站 155
9.1 項目概述 155
9.1.1 功能需求分析 155
9.1.2 技術棧選擇 156
9.1.3 阿裏雲 API 市場菜譜接口 157
9.1.4 API 接口說明 158
9.2 項目初始化 160
9.2.1 使用 Vite 創建項目 160
9.2.2 項目目錄結構設計 160
9.2.3 路由配置 161
9.2.4 網絡請求封裝 161
9.3 首頁開發 165
9.3.1 頁面布局設計 165
9.3.2 搜索框組件實現 166
9.3.3 搜索歷史實現 169
9.4 搜索結果列表頁 171
9.4.1 列表頁面布局 171
9.4.2 搜索功能實現 172
9.4.3 創建菜品卡片組件 174
9.4.4 加載狀態處理 175
9.4.5 錯誤處理機制 176
9.5 菜品詳情頁 179
9.5.1 詳情頁面布局 179
9.5.2 數據獲取與展示 181
9.5.3 食材清單展示 182
9.5.4 步驟說明實現 183
第10章 初識DRF 185
10.1 REST 架構與 API 設計基礎 185
10.1.1 理解 REST 架構風格 185
10.1.2 RESTful API 設計原則 187
10.1.3 HTTP 方法與 CRUD 操作的對應關系 187
10.2 Django REST Framework 入門 187
10.2.1 DRF 框架概述 187
10.2.2 第一個 DRF 應用 188
10.3 Postman 接口測試工具使用 192
10.3.1 Postman 簡介 192
10.3.2 Postman 的基本使用 192
10.4 序列化與反序列化 194
10.5 視圖組件 196
10.5.1 APIView 詳解 196
10.5.2 GenericAPIView 及其混入類 200
10.5.3 ViewSet 的使用 202
10.5.4 各種視圖的對比 205
10.6 認證與權限 205
10.6.1 認證機制 205
10.6.2 權限控制 210
第11章 DRF+Vue實戰——圖書管理系統 213
11.1 項目概覽與環境搭建 213
11.1.1 需求分析與技術選型 213
11.1.2 後端環境搭建 216
11.1.3 前端環境搭建 216
11.1.4 跨域配置 216
11.2 後端 API 開發 217
11.2.1 數據模型設計 217
11.2.2 序列化器開發 218
11.2.3 API 接口實現 219
11.3 前端開發 221
11.3.1 項目架構 221
11.3.2 核心組件開發 226
第12章 Django Vue全棧項目:電影模塊實現 233
12.1 需求分析 233
12.2 電影模塊概述 235
12.2.1 模塊功能介紹 235
12.2.2 RESTful API 設計 235
12.3 創建電影應用及模型 236
12.3.1 創建應用 236
12.3.2 定義數據模型 236
12.3.3 註冊後臺管理 237
12.3.4 配置全局路由 237
12.4 序列化器與視圖集實現 238
12.4.1 創建序列化器 238
12.4.2 創建視圖集 238
12.4.3 API 接口說明 239
12.5 實現前後端數據交互 239
12.5.1 前端項目結構 240
12.5.2 配置請求工具 240
12.5.3 封裝 API 接口 241
12.5.4 實現電影列表組件 241
12.5.5 配置路由 242
12.6 實現電影首頁 243
12.6.1 組件化結構 243
12.6.2 實現電影列表組件 243
12.7 分頁下拉加載 248
12.7.1 電影分頁 API 實現 248
12.7.2 電影列表組件加載分頁 250
12.7.3 請求工具封裝分頁參數 251
12.8 實現搜索電影功能 252
12.8.1 配置後端過濾接口 252
12.8.2 前端搜索實現 254
12.9 電影詳情頁功能 255
12.9.1 後端接口實現 255
12.9.2 前端頁面實現 256
第13章 Django Vue全棧項目:用戶模塊實現 259
13.1 用戶模塊 djoser 介紹 259
13.1.1 用戶模塊概述 259
13.1.2 djoser 模塊簡介 259
13.1.3 djoser 常用 API 接口 260
13.2 用戶註冊接口實現 261
13.2.1 配置 djoser 模塊並使用User 模型 261
13.2.2 配置郵箱服務器 262
13.2.3 測試用戶註冊功能 263
13.3 用戶註冊信息驗證功能實現 264
13.3.1 配置 djoser 註冊用戶信息 264
13.3.2 自定義序列化器 264
13.4 用戶註冊前端實現 265
13.4.1 註冊頁面布局設計 265
13.4.2 創建註冊頁面 266
13.4.3 表單驗證實現 267
13.4.4 註冊請求實現 269
13.5 郵件激活用戶功能 270
13.5.1 激活路由配置 270
13.5.2 激活頁面實現 271
13.5.3 激活邏輯實現 272
13.6 djoser JWT 認證 273
13.6.1 JWT 認證配置 273
13.6.2 JWT 接口使用 274
13.7 用戶登錄前端實現 276
13.8 退出登錄功能 277
13.8.1 退出登錄功能實現 277
13.8.2 登錄信息清理 278
13.9 JWT token 生命周期管理與自動續期機制實現 278
13.9.1 Django 設置令牌過期時間 278
13.9.2 前端令牌管理實現 278
13.10 發送郵件重置密碼 280
13.10.1 配置重置密碼鏈接 280
13.10.2 驗證請求接口 281
13.10.3 通過郵件重置密碼 282
13.11 API 請求認證實現 283
13.11.1 配置請求認證參數 283
13.11.2 實現請求攔截器 283
13.12 導航守衛權限控制 284
13.12.1 路由守衛配置 284
13.12.2 登錄後跳轉處理 285
13.13 接口權限設置 286
13.13.1 DRF 的權限類 286
13.13.2 自定義權限類 287
第14章 使用Docker部署Django+Vue項目到服務器 288
14.1 項目準備 288
14.2 Docker 基礎知識 289
14.2.1 Docker 簡介 289
14.2.2 Docker Compose 簡介 290
14.3 Docker 配置文件編寫 291
14.3.1 後端 Dockerfile 291
14.3.2 前端 Dockerfile 292
14.3.3 Nginx Dockerfile 293
14.3.4 Nginx 配置文件 293
14.3.5 Docker Compose 配置 294
14.3.6 環境變量配置 296
14.4 服務器部署流程 296
14.4.1 服務器環境準備 296
14.4.2 項目部署 297
14.4.3 初始化數據庫 299
14.4.4 驗證部署 300



