![](/c49/99/10029240477249.jpg)
店鋪:遼寧音像出版社圖書專營店 出版社:人民郵電出版社 ISBN:9787115506894 商品編碼:10029240477249 包裝:平裝 出版時間:2019-02-01 作者:胡陽
"基本信息 書名:Django企業開發實戰 高效Python Web框架指南 定價 作者:胡陽 出版社:人民郵電出版社 出版日期:2019-02-01 ISBN:9787115506894 字數:573000 頁碼:372 版次:1 裝幀:平裝 開本:16開 商品重量: 編輯推薦
內容提要
本書以從零開發一個博客繫統為例,介紹Django在日常工作中的應用。本書共分為四部分。靠前部分介紹編碼之前的準備工作,包括需求分析、Web開發基礎以及選型時Demo的練習。第二部分開始正式實現需求,介紹了環境配置、編碼規範以及合理的項目結構劃分。通過對Django各部分(Model、Form、admin、View)的介紹和使用,完成了一個基礎的博客繫統。第三部分在前面的基礎上介紹Django第三方插件的使用,通過引入這些插件進一步增強我們的繫統。很後一部分也是正式工作中必不可少的部分,包含調試代碼、優化繫統、壓力測試以及自動化等內容。本書適合Python Web開發人員閱讀。 目錄
部分初入江湖 章需求2 1.1需求文檔3 1.2需求評審/分析4 1.2.1博客需求評審5 1.2.2評審之後6 1.3功能分析6 1.3.1需求列表6 1.3.2功能點梳理7 1.3.3模塊劃分8 1.4模塊劃分9 1.4.1實體及關繫9 1.4.2模塊劃分10 1.5本章總結12 第2章框架基礎和技術選型13 2.1Python 2.7與Python 3.x13 2.1.1歷史演進13 2.1.2現實場景14 2.1.3為未來做準備15 2.1.4參考資料15 2.2WSGI——Web框架基礎15 2.2.1簡介15 2.2.2簡單的Web Server16 2.2.3多線程版的Web Server17 2.2.4簡單的WSGI Application20 2.2.5理解WSGI22 2.2.6WSGI中間件和Werkzeug23 2.2.7參考資料24 2.2.8擴展閱讀24 2.3Flask框架24 2.3.1入門推薦25 2.3.2Flask內置功能25 2.3.3匹配需求26 2.3.4總結26 2.4Tornado框架26 2.4.1印像26 2.4.2內置功能27 2.4.3總結27 2.5Django框架28 2.5.1新手友好程度28 2.5.2內置功能29 2.5.3總結29 2.5.4參考資料29 2.6本章總結30 第3章Django小試牛刀31 3.1如何閱讀Django文檔31 3.1.1文檔結構31 3.1.2總結36 3.2學員管理繫統的後臺開發37 3.2.1需求37 3.2.2初始化環境37 3.2.3創建項目38 3.2.4創建App38 3.2.5編寫代碼39 3.2.6基礎配置(中文)41 3.2.7總結41 3.3學員管理繫統的前臺開發41 3.3.1開發首頁41 3.3.2輸出數據42 3.3.3提交數據44 3.3.4優化數據,獲取邏輯47 3.3.5總結47 3.4學員管理繫統的進階部分48 3.4.1使用class-based view48 3.4.2配置middleware49 3.4.3編寫TestCase提升代碼穩定性53 3.4.4總結57 3.5本章總結57 第二部分正式開發 第4章進入開發60 4.1編碼規範60 4.1.1import this(Python之禪)61 4.1.2Python編碼規範62 4.1.3Django編碼風格66 4.1.4總結69 4.1.5參考資料69 4.2虛擬環境69 4.2.1Python 3.3之後自帶venv模塊69 4.2.2virtualenv的用法70 4.2.3總結71 4.2.4參考資料71 4.3合理的項目結構71 4.3.1原則71 4.3.2通用項目結構71 4.3.3Django項目結構72 4.3.4總結74 4.3.5參考資料74 4.4版本管理與協作:Git74 4.4.1我們的協作方式74 4.4.2Git的基本概念75 4.4.3案例演示76 4.4.4Git進階76 4.4.5總結80 4.4.6參考資料80 4.5本章總結80 第5章奠定項目基石:Model81 5.1創建項目及配置81 5.1.1拆分settings以適應不同的運行環境83 5.1.2配置settings84 5.1.3配置Git85 5.1.4總結86 5.1.5參考資料86 5.2編寫Model層的代碼86 5.2.1創建App87 5.2.2配置INSTALLED_APPS92 5.2.3創建數據庫[表]93 5.2.4提交代碼95 5.2.5總結96 5.2.6參考資料96 5.3Model層:字段介紹96 5.3.1ORM的基本概念97 5.3.2常用字段類型98 5.3.3參數99 5.3.4總結100 5.3.5參考資料101 5.4Model層:QuerySet的使用101 5.4.1QuerySet的概念101 5.4.2常用的QuerySet接口102 5.4.3進階接口104 5.4.4常用的字段查詢105 5.4.5進階查詢106 5.4.6總結107 5.4.7參考資料107 5.5本章總結107 第6章開發管理後臺108 6.1配置admin頁面108 6.1.1創建blog的管理後臺109 6.1.2ment的admin配置115 6.1.3config的admin配置115 6.1.4詳細配置116 6.1.5總結117 6.2根據需求定制admin117 6.2.1定義list頁面117 6.2.2編輯頁面的配置120 6.2.3自定義靜態資源引入122 6.2.4自定義Form123 6.2.5在同一頁面編輯關聯數據123 6.2.6定制site124 6.2.7admin的權限邏輯以及SSO登錄125 6.2.8總結127 6.2.9參考資料127 6.3抽取Admin基類127 6.3.1抽像author基類127 6.3.2總結131 6.4記錄操作日志131 6.4.1使用LogEntry131 6.4.2查詢某個對像的變更133 6.4.3在admin頁面上查看操作日志133 6.5本章總結134 第7章開發面向用戶的界面135 7.1搭建基礎結構與展示文章數據135 7.1.1分析URL和頁面數據135 7.1.2編寫URL代碼137 7.1.3編寫View代碼138 7.1.4配置模板139 7.1.5模板找不到的錯誤處理140 7.1.6編寫正式的View代碼141 7.1.7配置模板數據142 7.1.8總結144 7.1.9參考資料144 7.2配置頁面通用數據144 7.2.1完善模板信息144 7.2.2重構post_list視圖146 7.2.3分類信息147 7.2.4側邊欄配置150 7.2.5總結150 7.3封裝側邊欄邏輯150 7.3.1調整模型151 7.3.2封裝好SideBar151 7.3.3總結153 7.4整理模板代碼153 7.4.1抽像基礎模板153 7.4.2解耦硬編碼155 7.4.3總結157 7.5升級至class-based view157 7.5.1函數與類157 7.5.2理解class-based view157 7.5.3改造代碼162 7.5.4總結166 7.5.5參考資料166 7.6Django的View是如何處理請求的166 7.6.1class-based view的處理流程166 7.6.2總結167 7.7本章總結167 第8章引入前端樣式框架Bootstrap168 8.1Bootstrap的基本用法169 8.1.1介紹169 8.1.2容器和柵格繫統169 8.1.3簡單的頁面布局171 8.1.4總結174 8.1.5參考資料174 8.2基於Bootstrap美化頁面174 8.2.1增加themes目錄175 8.2.2修改模板176 8.2.3總結180 8.3配置線上靜態資源180 8.3.1內聯CSS和外聯CSS180 8.3.2Django中的靜態資源181 8.3.3在模板中使用靜態資源182 8.3.4總結183 8.3.5參考資料183 8.4本章總結183 第9章完成整個博客繫統184 9.1增加搜索和作者過濾184 9.1.1增加搜索功能185 9.1.2增加作者頁面186 9.1.3總結186 9.2增加友鏈頁面186 9.3增加評論模塊188 9.3.1評論提交的方式188 9.3.2評論模塊通用化改造188 9.3.3實現評論190 9.3.4抽像出評論模塊組件和Min195 9.3.5修改評論模板197 9.3.6總結197 9.3.7參考資料197 9.4配置Markdown編寫文章的支持197 9.4.1Markdown第三方庫197 9.4.2評論內容支持198 9.4.3文章正文使用Markdown198 9.4.4配置代碼高亮199 9.4.5總結201 9.4.6參考資料201 9.5增加訪問統計201 9.5.1文章訪問統計分析202 9.5.2實現文章訪問統計203 9.5.3更加合理的方案206 9.5.4總結206 9.5.5參考資料206 9.6配置RSS和sitemap206 9.6.1實現RSS輸出206 9.6.2實現sitemap208 9.6.3配置RSS和sitemap的urls.py209 9.6.4總結210 9.6.5參考資料210 9.7本章總結210 第三部分第三方插件的使用 0章使用第三方插件增強管理後臺214 10.1xadmin介紹和使用215 10.1.1特性215 10.1.2安裝的xadmin代碼216 10.1.3admin替換為xadmin216 10.1.4fieldset修改為FieldSet218 10.1.5靜態資源Media配置219 10.1.6自定義過濾器219 10.1.7數據處理上的差異221 10.1.8處理inline221 10.1.9site title和site footer的處理222 10.1.10去掉Django admin自帶的log配置222 10.1.11總結222 10.2使用django-autoplete-light優化性能222 10.2.1創造1萬個分類223 10.2.2django-autoplete-light介紹224 10.2.3引入插件224 10.2.4總結226 10.2.5參考資料226 10.3使用django-ckeditor開發富文本編輯器226 10.3.1基礎配置227 10.3.2配置圖片228 10.3.3上傳圖片配置228 10.3.4自定義存儲以及水印229 10.3.5Markdown和django-ckeditor共存231 10.3.6總結234 10.3.7參考資料234 10.4本章總結235 1章使用django-rest-framework236 11.1接口需求及django-rest-framework介紹237 11.1.1快速上手237 11.1.2配置API docs240 11.1.3總結242 11.1.4參考資料242 11.2生成我們的RESTful接口242 11.2.1區分list和detail242 11.2.2實現分頁243 11.2.3實現Category接口244 11.2.4HyperlinkedModelSerializer的使用246 11.2.5其他數據接口的實現248 11.2.6總結248 11.2.7參考資料248 11.3本章總結249 第四部分上線前的準備及線上問題排查 2章調試和優化252 12.1常用的調試和調優手段252 12.1.1調試手段252 12.1.2調優手段259 12.1.3總結262 12.1.4參考資料262 12.2使用django-debug-toolbar優化繫統262 12.2.1快速配置262 12.2.2解讀數據263 12.2.3配置第三方panel267 12.2.4line_profiler269 12.2.5總結271 12.2.6參考資料271 12.3使用silk271 12.3.1快速配置silk271 12.3.2配置profiling273 12.3.3總結273 12.3.4參考資料273 12.4本章總結274 3章配置MySQL和緩存275 13.1配置MySQL275 13.1.1使用CONN_MAX_AGE優化數據庫連接276 13.1.2配置正式的settings277 13.1.3總結277 13.1.4參考資料277 13.2緩存的演化278 13.2.1什麼是緩存278 13.2.2緩存裝飾器279 13.2.3增強緩存裝飾器280 13.2.4不引入Redis283 13.2.5繼續演變我們的緩存邏輯284 13.2.6Django中的緩存配置284 13.2.7配置Redis緩存286 13.2.8應用場景和緩存的粒度287 13.2.9總結287 13.2.10參考資料288 13.3本章總結288 4章上線前的準備289 14.1你的代碼如何為用戶提供服務290 14.1.1整體結構290 14.1.2項目部署方案291 14.1.3繫統架構292 14.1.4總結292 14.2標準化打包和自動化部署292 14.2.1配置項目的setup.py293 14.2.2sdist與bdist_wheel295 14.2.3配置內部PyPI服務器296 14.2.4自動化部署298 14.2.5編寫fabfile配置299 14.2.6總結303 14.2.7參考資料304 14.3在生產環境中運行項目304 14.3.1為什麼需要使用Gunicorn304 14.3.2Gunicorn簡介305 14.3.3使用Gunicorn306 14.3.4Supervisor介紹307 14.3.5自動化部署和supervisord310 14.3.6setup.py和requirements.txt311 14.3.7配置正式settings312 14.3.8靜態文件處理315 14.3.9總結315 14.3.10參考資料315 14.4配置Nginx315 14.4.1Nginx介紹315 14.4.2為什麼使用Nginx316 14.4.3配置Nginx318 14.4.4總結320 14.4.5參考資料320 14.5常用的監控方式320 14.5.1實時監控320 14.5.2統計分析321 14.5.3業務監控(埋點統計)322 14.5.4總結322 14.6試試你的繫統能抗多少請求322 14.6.1計算繫統承載量322 14.6.2反推一下324 14.6.3壓力測試324 14.6.4壓測工具介紹324 14.6.5完全模擬真實流量326 14.6.6緩存加速訪問327 14.6.7總結328 14.6.8參考資料328 14.7本章總結328 5章升級到Django 2.0329 15.1Django 2.x——Python 2時代的逝去329 15.2輕松升級到Django 2.0330 15.2.1幾個重要的變化330 15.2.2第三方庫的升級331 15.2.3總結331 15.3本章總結332 6章 後總結333 16.1技術棧總結333 16.1.1技術棧列表333 16.1.2總結334 16.2後續可實踐方向334 16.2.1精於一點335 16.2.2持續滾動雪球335 16.3Django Web開發技術棧清單336 16.3.1Python基礎336 16.3.2Django基礎336 16.3.3Django進階338 16.3.4部署相關338 16.3.5MySQL數據庫339 16.3.6Redis339 16.3.7常用算法339 16.3.8總結339 16.4 後340 附錄A使用Fabric 2.0341 附錄B使用uWSGI來啟動Django程序347 附錄CSentry安裝和配置350 附錄D評論驗證碼功能354 附錄E通過signal來解耦代碼358 附錄F實現文章置頂的幾種方案363 附錄G以騰訊雲為例演示部署流程365
作者介紹
胡陽,網名the5fire,前搜狐開發工程師,現任知乎開發工程師,負責部分業務的後端開發和團隊管理。具有10年編程經驗和寫博客經驗,喜歡通過代碼來構建一些有價值的東西,也愛好記錄和分享自己的經驗。2011年從Java轉到Python後,便不可自撥,主要熟悉的Web框架是Django和Tornado。贊嘆於Python的開發效率,欣賞Django完備的功能點對實際項目開發中程序員生產力的提升。 序言
" |