從實際需求分析開始,實現當今主流知識問答應用的功能,包括動態、文章、問答、私信、消息通知、搜索、我的中心,打造企業級知識問答網站,由此全面學習Python後端開發技術棧,內容涵蓋Python、Django生態、通用類視圖的源碼、DFS/BFS/C3線性化算法、組合模式與觀察者模式、TestCase測試用例、MySQL數據庫、Redis緩存、WebSocket實時推送、Haystack+Elasticsearch搜索、應用部署和運維、雲計算服務。從零開發到阿里雲上線,講解企業項目開發的全過程。面試
本教程是專門爲 求職/跳槽漲薪/優質畢設 量身打造的實戰教程!課程不單項目是企業級的就連 開發流程,技術選型,都嚴格按照真實的企業開發流程。讓你足不出戶就能體驗到真實的企業開發場景是什麼樣的。再也不惶恐沒有面試做品和工做經驗,助力你斬獲高薪offer!算法
最佳實踐目的是使生產或管理實踐的結果達到最優,並減小出錯的可能性。本章講的一些實踐方法在後面都會用到,算是項目知識鋪墊。每小節都會舉例和你們說明。數據庫
本章將從用戶的角度,分析須要實現哪些功能,學習需求分析,Markdown寫項目需求文檔,貼近「高內聚,低耦合」原則,模塊化設計網站功能。先後端的技術選型,規劃各個軟件的版本。django
介紹神器Cookiecutter,它的優勢和侷限,按照肯定的技術棧選擇cookiecutter-django搭建具備高完成度的項目,學習Python項目如何組織代碼,如何管理配置,如何管理依賴。項目開發環境介紹:Pycharm鏈接CentOS 7遠程開發設置,以及MySQL用戶權限管理和安全設置。編程
繼承AbstractUser自定義用戶模型類,引入django-allauth認證系統,同時完成本地帳戶功能和集成第三方帳戶登陸註冊,再回頭講解OAuth 2.0協議的原理。學習使用TestCase爲Django模型類、網址、視圖編寫測試用例。後端
本章在實現需求的同時,穿插講解Django的高級知識,如ORM中多對多外鍵。先使用通用類視圖ListView/DeleteView開發功能,再講解框架的源碼,而後是Python語言中多繼承的MRO算法,按業務→框架→源碼→Python底層算法順序由淺入深講解。緩存
本章首先講解問答類業務中最多見的兩個功能需求:詳情頁的slug和標籤管理。依據軟件開發中DRY原則,在模型類中自定義查詢集QuerySet,模仿主流問答類網站,實現文章的Markdown編輯與實時預覽效果,實現功能以後再剖析CreateView/UpdateView源碼。安全
實現問答功能:本章爲贊乎產品的核心功能,業務邏輯頗爲複雜,首先將梳理「用戶-問題-回答-點贊/踩-採納」之間的關係,而後介紹Django中的ContentType,使用更高級外鍵GenericForeignKey與GenericRelation來解決問題。在測試用例中,咱們將改用更加符合企業實踐的方式—RequestFactory類直接測試視圖。服務器
私信功能包括私信記錄、在線回覆、私信提示,難點在於後端消息的實時推送,本章先講解消息模型類與查詢集的設計,實現用戶發送消息與接收消息處理,而後是WebSocket原理,再介紹Django Channels,什麼是consumer,routing,Django應用中如何實現WebSocket認證。cookie
本章是項目的重難點,將着重講,內容包括通知功能的業務場景分析,通知處理器設計與實現,進一步實戰實戰WebSocket編程,什麼是ASGI服務器,以及ASGI請求的通道服務(Redis) ,如何繼承AsyncWebSocketConsumer類實現用戶異步鏈接、斷開、接收通知。
本章將學習使用django-haystack + elasticsearch實現全站搜索,能夠同時搜索文章、動態、問答、用戶、標籤。包括Elasticsearch搜索引擎安裝和配置,haystack經過型號量機制實時生成索引,以及搜索結果分類處理。
本章將先講解Django項目優化的知識,包括功能優化,緩存優化,SQL優化等,而後是Python應用的部署原理,各類WSGI/ASGI協議,Nginx反向代理的做用,而後精講兩大類4種Django應用的部署方式,包括部署的配置文件、配置項、日誌內容的含義,如何排錯。
雲計算成爲主流趨勢,熟悉使用雲產品成爲企業招聘需求,本章將講解如何使用阿里雲ECS+RDS上線項目,包括選擇合適的ECS,作初始化配置、安全配置等;RDS實例建立,帳號及數據庫管理,ECS鏈接RDS。須要同窗們動手申請雲帳號,項目上線成功後能夠公網訪問,互相監督促進。
回顧整個課程,梳理開發過程,複習課程中的重難點知識。總結經驗,提出項目中能夠進一步完善的功能,如使用Django緩存優化,並給出實現思路,讓同窗們主動思考,探索。 (獲取詳細項目目錄和視頻教程,請私信我)