Django + Vue.js 實戰派 — Python Web 開發與運維

楊永剛

  • 出版商: 電子工業
  • 出版日期: 2022-03-01
  • 售價: $768
  • 貴賓價: 9.5$730
  • 語言: 簡體中文
  • 頁數: 488
  • ISBN: 7121430843
  • ISBN-13: 9787121430848
  • 相關分類: DjangoPythonVue.js
  • 立即出貨

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

商品描述

本書主要介紹了Django編程開發與運維過程中涉及的方法、技巧和實戰經驗,共分5篇。“第1篇 基礎”介紹用Django開發Web應用的基礎知識;“第2篇 後台項目實戰”通過開發一個商城系統的後台來融合前面章的知識點;“第3篇 進階”通過Django Rest Framework框架來設計和實現RESTful風格的接口,以及分層的自動化測試和基於Redis的緩存技術;“第4篇 前臺項目實戰”使用前後端分離的方式開發商城系統前臺,涉及Vue.js、Axios、Vue Router、Vuex、RESTful接口等技術。“第5篇 部署運維”涉及Django的傳統部署,Django的Docker部署,持續集成,持續交付和持續部署,運維監控。本書通過完整的商城系統實例,融合了Django開發中涉及的知識點;通過大量實例手把手帶領讀者從需求、開發、集成、代碼安全檢測、測試、部署上線等環節踐行“軟件開發運維一體化”的理念。

目錄大綱

★★第1篇 基 礎 ★第1章 走進Django /2 ●1.1 瞭解Django /2 1.1.1 Django發展歷史和版本 /2 1.1.2 MVC和MTV模式 /3 ●1.2 安裝Django /5 1.2.1 安裝Python虛擬環境 /5 1.2.2 在Windows中安裝Django /7 ●1.3 用VS Code編輯器進行Django開發 /8 1.3.1 設置中文界面 /8 1.3.2 安裝Python插件 /9 1.3.3 安裝Django插件 /9 ●1.4 【實戰】開發第1個Django應用 /10 1.4.1 創建項目 /10 1.4.2 創建應用 /10 1.4.3 處理控制器 /12 1.4.4 處理模板 /12 1.4.5 運行應用 /13 ●1.5 Django項目的運行和調試 /13 1.5.1 設置運行環境 /14 1.5.2 調試項目 /14 ★第2章 網站的入口——Django的路由和視圖 /16 ●2.1 認識路由 /16 2.1.1 路由系統的基本配置 /16 2.1.2 【實戰】用“路由包含”簡化項目的復雜度 /17 2.1.3 解析路由參數 /18 2.1.4 【實戰】用re_path()方法正則匹配復雜路由 /20 2.1.5 反向解析路由 /22 ●2.2 認識視圖函數 /23 2.2.1 什麽是視圖函數 /23 2.2.2 視圖函數的底層原理 /24 2.2.3 視圖處理函數的使用 /27 ●2.3 認識視圖類 /30 2.3.1 什麽是視圖類 /30 2.3.2 對比視圖函數和視圖類 /30 2.3.3 利用視圖類進行功能設計 /31 ★第3章 頁面展現——基於Django模板 /36 ●3.1 Django模板語言——DTL /36 3.1.1 模板變量 /36 3.1.2 模板標簽 /38 3.1.3 模板過濾器 /42 ●3.2 模板的高級用法 /43 3.2.1 模板轉義 /43 3.2.2 【實戰】自定義過濾器 /44 3.2.3 【實戰】自定義標簽 /46 ●3.3 模板繼承 /49 3.3.1 設計母版頁 /49 3.3.2 設計內容頁 /50 3.3.3 設計組件 /51 ●3.4 配置模板文件 /52 3.4.1 理解HTML、CSS和JavaScript /52 3.4.2 配置靜態文件 /53 ★第4章 使用數據庫——基於Django模型 /55 ●4.1 Django模型 /55 4.1.1 定義模型 /55 4.1.2 瞭解模型中的關系 /59 4.1.3 配置項目文件 /63 4.1.4 遷移數據 /64 ●4.2 用Django中的ORM操作數據庫 /66 4.2.1 瞭解ORM /66 4.2.2 熟悉QuerySet對象 /67 4.2.3 查詢數據 /69 4.2.4 新增數據 /70 4.2.5 更新數據 /71 4.2.6 刪除數據 /71 4.2.7 操作關聯表 /71 4.2.8 F()函數和Q()函數 /77 4.2.9 執行原生SQL /78 4.2.10 事務處理 /81 ★第5章 自動生成界面——基於Django表單 /84 ●5.1 HTML表單 /84 5.1.1 用令牌CSRF保證表單的安全 /85 5.1.2 【實戰】用HTML表單上傳文件 /86 ●5.2 Django的Form表單 /87 5.2.1 認識Form表單 /87 5.2.2 表單數據的校驗 /93 5.2.3 表單數據的獲取 /97 5.2.4 【實戰】用Form表單上傳文件 /98 ●5.3 Django的模型表單 /100 5.3.1 認識模型表單 /100 5.3.2 校驗模型表單數據 /101 5.3.3 處理模型表單數據 /102 ●5.4 使用AJAX提交表單 /103 5.4.1 基於jQuery技術實現AJAX /103 5.4.2 在AJAX請求中設置令牌csrf_token /104 5.4.3 【實戰】使用AJAX實現用戶登錄 /105 ★第6章 用戶認證 /107 ●6.1 初識用戶認證 /107 6.1.1 認識Auth模塊 /107 6.1.2 瞭解用戶權限數據表 /109 ●6.2 用戶管理 /109 6.2.1 用戶註冊 /110 6.2.2 用戶登錄 /111 6.2.3 擴展用戶模型 /113 ●6.3 【實戰】利用用戶模型實現用戶身份認證及狀態保持 /114 6.3.1 增加視圖函數myuser_reg() /114 6.3.2 增加視圖函數myuser_login() /115 6.3.3 用戶退出的設置 /115 6.3.4 用戶首頁的顯示 /115 ●6.4 權限管理 /117 6.4.1 權限的設置 /117 6.4.2 權限認證的相關方法 /117 6.4.3 自定義用戶權限 /118 6.5 【實戰】用裝飾器控制頁面權限 /119 ●6.5.1 增加權限裝飾器 /119 6.5.2 修改模板文件 /120 6.5.3 設置項目配置文件 /120 6.5.4 測試權限 /120 ●6.6 中間件技術 /121 6.6.1 認識Django中間件 /122 6.6.2 使用Django中間件 /123 6.6.3 【實戰】用中間件簡化權限認證 /125 ★★第2篇 後台項目實戰 ★第7章 【實戰】開發一個商城系統的後台 /128 ●7.1 商城系統後台的設計分析 /128 7.1.1 需求分析 /128 7.1.2 架構設計 /129 7.1.3 數據庫模型設計 /130 ●7.2 使用Django自帶的Admin後台管理系統 /131 7.2.1 創建商城系統後台項目 /131 7.2.2 登錄Admin後台管理系統 /133 7.2.3 配置Admin後台管理系統 /133 ●7.3 用Bootstrap框架實現商城系統後台 /136 7.3.1 開發“用戶註冊”模塊 /136 7.3.2 開發“用戶登錄”模塊 /140 7.3.3 開發商城系統後台首頁面 /143 7.3.4 開發“用戶信息維護”模塊 /146 7.3.5 開發“商品分類管理”模塊 /156 7.3.6 開發“商品信息管理”模塊 /159 ★★第3篇 進 階 ★第8章 接口的設計與實現 /168 ●8.1 前後端分離 /168 8.1.1 瞭解前後端分離 /168 8.1.2 為什麽要前後端分離 /169 8.1.3 如何實施前後端分離 /171 8.1.4 前後端分離的技術棧 /171 ●8.2 設計符合標準的RESTful接口 /172 ●8.3 序列化和反序列化 /174 8.3.1 認識序列化和反序列化 /174 8.3.2 用JSON模塊進行數據交互 /174 8.3.3 用JsonResponse類進行數據交互 /175 ●8.4 接口開發——基於Django Rest Framework框架 /176 8.4.1 安裝DRF框架 /177 8.4.2 用Serializer類和ModelSerializer類進行序列化操作 /177 8.4.3 請求和響應 /182 8.4.4 【實戰】用裝飾器@api-view實現視圖函數 /183 8.4.5 【實戰】用APIView類實現視圖類 /185 8.4.6 【實戰】用Mixins類改進RESTful接口 /187 8.4.7 【實戰】用GenericAPIView類實現視圖類 /190 8.4.8 用視圖集ViewSets改進RESTful接口 /192 8.4.9 分頁 /197 8.4.10 過濾、搜索和排序 /198 8.4.11 自定義消息格式 /202 8.4.12 自定義異常格式 /207 ●8.5 接口安全機制 /209 8.5.1 基於DRF框架實現Token認證 /209 8.5.2 基於DRF框架實現JWT認證 /212 8.5.3 基於後端技術的跨域解決方案 /218 ●8.6 【實戰】實現商城系統的接口 /220 8.6.1 用戶相關接口 /220 8.6.2 商品相關接口 /226 8.6.3 訂單相關接口 /233 8.6.4 基礎接口——“地址信息”接口 /241 ●8.7 【實戰】利用DRF生成接口文檔 /243 8.7.1 安裝依賴 /243 8.7.2 配置文件 /243 8.7.3 測試 /243 ●8.8 【實戰】利用Swagger服務讓接口文檔更專業 /244 8.8.1 安裝配置django-rest-swagger /244 8.8.2 配置視圖類 /244 8.8.3 配置路由 /245 8.8.4 運行效果 /245 ★第9章 分層的自動化測試 /246 ●9.1 分層的自動化測試 /246 9.1.1 單元自動化測試 /247 9.1.2 接口自動化測試 /247 9.1.3 用戶界面自動化測試 /248 ●9.2 單元自動化測試 /248 9.2.1 認識單元測試框架unittest /248 9.2.2 【實戰】用unittest進行單元測試 /249 9.2.3 【實戰】用HTMLTestRunner生成HTML報告 /251 9.2.4 【實戰】用Pytest進行單元測試 /252 9.2.5 【實戰】在Django中編寫和運行測試用例 /255 ●9.3 接口自動化測試 /256 9.3.1 【實戰】進行Postman測試 /257 9.3.2 【實戰】用“Requests + Pytest”實現接口自動化測試 /258 ●9.4 用戶界面自動化測試 /260 9.4.1 認識自動化測試Selenium庫 /260 9.4.2 安裝Selenium庫 /260 9.4.3 基本使用 /261 9.4.4 頁面元素定位的方法 /262 9.4.5 Selenium庫的高級用法 /263 9.4.6 【實戰】自動化測試商城後台管理系統的登錄頁面 /268 ★第10章 基於Redis的緩存技術 /270 ●10.1 為什麽需要緩存 /270 ●10.2 用Django內置模塊實現緩存 /270 10.2.1 基於數據庫方式實現緩存 /271 10.2.1 緩存視圖函數和視圖類 /271 ●10.3 用DRF框架實現緩存 /273 10.3.1 用裝飾器完成緩存 /273 10.3.2 用CacheResponseMixin類完成緩存 /274 ●10.4 用Redis實現緩存 /275 10.4.1 搭建Redis環境 /275 10.4.2 用Django操作Redis /276 10.4.3 【實戰】用Redis存儲session信息 /278 ★★第4篇 前臺項目實戰 ★第11章 開發商城系統的前臺(接第7章實戰) /282 ●11.1 商城系統前臺的設計分析 /282 11.1.1 需求分析 /282 11.1.2 架構設計 /283 ●11.2 前端開發利器——Vue.js框架 /284 11.2.1 認識Vue.js /284 11.2.2 用Vue-CLI腳手架快速搭建項目骨架 /284 11.2.3 用NPM進行包管理和分發 /286 11.2.4 用npm run build命令打包項目 /287 11.2.5 用Visual Stdio Code編輯器進行代碼開發 /287 ●11.3 Vue.js的基本操作 /287 11.3.1 用插值實現數據綁定 /288 11.3.2 用computed屬性實現變量監聽 /289 11.3.3 用class和style設置樣式 /290 11.3.4 用v-if實現條件渲染 /291 11.3.5 用v-for實現列表渲染 /292 11.3.6 用“v-on:”或“@”實現事件綁定 /293 11.3.7 用v-model實現雙向數據綁定 /294 ●11.4 用Vue Router庫實現路由管理 /295 11.4.1 瞭解Vue Router庫 /295 11.4.2 基本用法 /296 ●11.5 用Axios庫實現數據交互 /297 11.5.1 瞭解Axios庫 /297 11.5.2 基本用法 /297 ●11.6 用Vuex實現狀態管理 /299 11.6.1 基本用法 /299 11.6.2 用mutations和actions操作變量 /301 11.6.3 用getters獲取變量 /303 11.6.4 用擴展運算符簡化編寫 /304 ●11.7 【實戰】用Vue.js開發商城系統的前臺 /304 11.7.1 核心技術點介紹 /305 11.7.2 公共頁面開發 /307 11.7.3 “商品首頁”模塊開發 /313 11.7.4 “商品列表”模塊開發 /321 11.7.5 “商品詳情”模塊開發 /328 11.7.6 “用戶註冊”模塊開發 /332 11.7.7 “用戶登錄”模塊開發 /335 11.7.8 “購物車管理”模塊開發 /339 11.7.9 “訂單管理”模塊開發 /344 11.7.10 “個人中心”模塊開發 /348 ★★第5篇 部 署 運 維 ★第12章 Django的傳統部署 /358 ●12.1 部署前的準備工作 /358 12.1.1 準備虛擬機 /358 12.1.2 安裝Python 3.8.2 /359 12.1.3 安裝虛擬環境和Django /359 ●12.2 使用MySQL數據庫 /361 12.2.1 安裝MySQL數據庫 /361 12.2.2 配置MySQL數據庫 /362 12.2.3 客戶端連接MySQL數據庫 /363 12.2.4 【實戰】生成商城系統的數據庫和表 /365 ●12.3 用uWSGI進行部署 /365 12.3.1 WSGI、uwsgi和uWSGI的關系 /365 12.3.2 安裝uwsgi軟件 /366 12.3.3 啟動並測試uwsgi /367 12.3.4 詳解配置文件 /367 12.3.5 常用命令 /368 12.3.6 【實戰】部署商城系統後台 /368 ●12.4 用Gunicorn進行部署 /370 12.4.1 安裝Gunicorn /370 12.4.2 啟動服務並測試 /371 12.4.3 編寫配置文件 /371 12.4.4 【實戰】部署商城系統接口 /372 ●12.5 用Supervisor管理進程 /373 12.5.1 安裝和配置 /373 12.5.2 瞭解配置文件 /374 12.5.3 常用命令 /374 12.5.4 Web監控界面 /375 12.5.5 【實戰】用Supervisor管理進程 /376 ●12.6 用Nginx進行代理 /377 12.6.1 正向代理和反向代理 /377 12.6.2 為什麽用了uWSGI還需要用Nginx /378 12.6.3 安裝Nginx /378 12.6.4 瞭解配置文件 /379 12.6.5 【實戰】部署商城系統後台 /381 12.6.6 【實戰】部署商城系統接口 /382 12.6.7 【實戰】部署商城系統前臺 /383 12.6.8 【實戰】利用Nginx負載均衡部署商城系統接口 /384 ★第13章 Django的Docker部署 /388 ●13.1 介紹Docker /388 13.1.1 為什麽要使用Docker /388 13.1.2 虛擬機和容器的區別 /390 13.1.3 瞭解Docker的鏡像、容器和倉庫 /390 ●13.2 安裝並啟動Docker /392 13.2.1 安裝Docker /392 13.2.2 啟動Docker /393 ●13.3 操作Docker鏡像 /394 13.3.1 搜索鏡像 /394 13.3.2 獲取鏡像 /394 13.3.3 查看鏡像 /395 13.3.4 導入/導出鏡像 /396 13.3.5 配置國內鏡像倉庫 /396 ●13.4 操作Docker容器 /397 13.4.1 啟動容器 /397 13.4.2 進入容器 /399 13.4.3 停止容器 /400 13.4.4 刪除容器 /400 13.4.5 復制容器中的文件 /401 13.4.6 查看容器中的日誌 /401 ●13.5 【實戰】用Docker部署MySQL /401 13.5.1 拉取鏡像 /401 13.5.2 創建容器 /402 13.5.3 進入MySQL容器 /402 ●13.6 【實戰】用Docker方式部署Redis /403 13.6.1 拉取Redis /403 13.6.2 創建並啟動Redis容器 /404 ●13.7 製作自己的鏡像——編寫Dockerfile文件 /404 13.7.1 語法規則 /404 13.7.2 構建Nginx鏡像 /405 ●13.8 將鏡像推送到私有倉庫Harbor中 /407 13.8.1 搭建Harbor私有倉庫 /407 13.8.2 安裝Docker-Compose /407 13.8.3 安裝Harbor /407 13.8.4 登錄Harbor /409 13.8.5 配置、使用Harbor /409 ●13.9 【實戰】用Docker部署商城系統的接口 /411 13.9.1 拉取並啟動MySQL容器 /411 13.9.2 創建接口鏡像並啟動容器 /411 13.9.3 拉取並啟動Nginx容器 /413 ●13.10 【實戰】用Docker Compose部署多容器 /416 13.10.1 編排容器文件 /416 13.10.2 構建和啟動 /417 ★第14章 持續集成、持續交付與持續部署 /419 ●14.1 瞭解持續集成 /419 ●14.2 瞭解持續交付 /419 ●14.3 瞭解持續部署 /420 ●14.4 代碼版本管理——基於碼雲 /420 14.4.1 Git中的4個概念——工作區、暫存區、本地倉庫、遠程倉庫 /420 14.4.2 克隆遠程庫到本地庫 /421 ●14.5 進行持續集成——基於Jenkins /422 14.5.1 安裝Jenkins /422 14.5.2 【實戰】商城系統接口的持續構建 /424 ●14.6 進行代碼質量掃描——基於SonarQube /429 14.6.1 安裝SonarQube /430 14.6.2 【實戰】自動化代碼質量掃描 /431 ●14.7 用Jenkins進行持續部署——基於SSH /436 14.7.1 安裝插件 /436 14.7.2 配置Publish over SSH項 /436 14.7.3 配置SSH免密登錄 /437 14.7.4 配置SSH Server /438 14.7.5 配置“構建” /438 14.7.6 立即構建 /440 ●14.8 進行自動化測試——基於“Jenkins + Allure + Pytest” /440 14.8.1 安裝 /440 14.8.2 配置“構建” /442 14.8.3 配置“構建後操作” /443 14.8.4 立即構建 /444 14.8.5 常見問題的處理 /445 ●14.9 【實戰】用Jenkins流水線部署商城系統接口 /446 14.9.1 流水線操作的語法 /446 14.9.2 部署商城系統接口 /447 ★第15章 運維監控——基於Prometheus + Grafana /454 ●15.1 認識Prometheus /454 15.1.1 Prometheus的核心組件 /455 15.1.2 安裝並啟動 /455 15.1.3 查看監控指標數據和圖表 /456 15.1.4 瞭解Prometheus的主配置文件 /456 ●15.2 認識Grafana /457 15.2.1 安裝 /458 15.2.2 配置數據源 /458 15.2.3 導入模板 /459 ●15.3 監控主機和服務——基於Prometheus的組件Exporter /460 15.3.1 監控主機 /460 15.3.2 監控MySQL數據庫 /462 15.3.3 監控Redis /464 ●15.4 實現郵件報警——基於Prometheus的組件Altermanager /465 15.4.1 安裝配置Alertmanager /465 15.4.2 瞭解配置文件 /466 15.4.3 設置報警規則 /467 ●15.5 容器監控報警——基於Prometheus的組件cAdvisor /468 15.5.1 安裝cAdvisor /469 15.5.2 啟動容器 /469 15.5.3 導入模板 /469 ●15.6 對Django應用進行監控 /469 15.6.1 安裝django_prometheus包 /470 15.6.2 配置settings.py文件 /470 15.6.3 配置路由並訪問 /470 15.6.4 配置Prometheus /471 15.6.5 添加模板 /471