知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >
python web開發(fā)入門
發(fā)表時(shí)間:2017-5-10
發(fā)布人:葵宇科技
瀏覽次數(shù):53
Ps:2019-1-18修改
我其實(shí)對(duì)這篇文章能有兩萬+的閱讀量感覺很驚訝,占了我博客訪問人數(shù)的很大一部分,我猜測(cè)可能確實(shí)是傳統(tǒng)的Python web開發(fā)的學(xué)習(xí)方式都是從框架開始,而框架封裝過度,讓人難以理解背后的原理,最后只是簡(jiǎn)單的學(xué)習(xí)API和框架,同時(shí)學(xué)習(xí)Python的人中很大一部分其實(shí)是非計(jì)算機(jī)專業(yè)的同學(xué),基礎(chǔ)薄弱,想學(xué)習(xí)底層原理也不知道從何入手。
原先博文優(yōu)點(diǎn)和缺點(diǎn)都很明顯,缺點(diǎn)在于我只是簡(jiǎn)單羅列了資源,很多東西其實(shí)沒有表達(dá)清楚,因?yàn)樽畛醯哪康?#xff0c;并不是教學(xué),而是自己回顧和總結(jié),優(yōu)點(diǎn)可能在于他是比較系統(tǒng)化的展示出了web開發(fā)的演變過程,這其實(shí)有助于建立知識(shí)之間的聯(lián)系和對(duì)web開發(fā)整體的理解。
后來我就考慮能否把文章的內(nèi)容更加深入一些,用一套代碼就能展現(xiàn)出這整個(gè)過程演變,而不是碎片化的資源羅列,把真正做成一個(gè)教學(xué)貼。但是因?yàn)橥涎影Y一直沒有完成,現(xiàn)在基本完成,我希望它會(huì)是一個(gè)好的學(xué)習(xí)指南,也希望讀者能從學(xué)習(xí)這些代碼的過程中,理解web開發(fā)的本質(zhì)。
代碼環(huán)境為:Python3.5,Ubuntu,Window下沒有測(cè)試過
(1) 基礎(chǔ):Web服務(wù)器
核心知識(shí):進(jìn)程,系統(tǒng)調(diào)用,socket編程,http協(xié)議
Web開發(fā)的本質(zhì)就是服務(wù)端進(jìn)程與客戶端進(jìn)程之間的以http協(xié)議的形式進(jìn)行通信。要完成這個(gè)通信過程就需要操作系統(tǒng)提高支持,具體來說就是使用socket系統(tǒng)調(diào)用進(jìn)行數(shù)據(jù)傳遞。
學(xué)習(xí)步驟:
- 理解進(jìn)程和線程的概念,了解系統(tǒng)調(diào)用
- 了解ip地址,port端口號(hào),tcp協(xié)議,以及他們和socket的關(guān)系
- 了解socket的函數(shù)作用,和參數(shù)的意義。
- 了解HTTP協(xié)議的內(nèi)容
- 看v1代碼,用注釋來解釋每一行的作用
- 看v2代碼,理解web服務(wù)器作用在于解析http請(qǐng)求報(bào)文和生成http應(yīng)答
code:https://github.com/yangzhezjgs/python_web_dev_primer/tree/master/1-basic
(2) 簡(jiǎn)單CGI編程
核心知識(shí):Python中os模塊和subprocess模塊的簡(jiǎn)單使用
CGI協(xié)議實(shí)現(xiàn)了web服務(wù)器和web應(yīng)用程序之間的分離,http應(yīng)答報(bào)文的內(nèi)容生成由Python程序負(fù)責(zé),web服務(wù)器只負(fù)責(zé)解析請(qǐng)求和生成應(yīng)答的http 頭。
學(xué)習(xí)步驟:
1.了解CGI的概念
2.了解os,subprocess模塊的常用的函數(shù)
3.閱讀代碼,用注釋來解釋每一行的作用
code:https://github.com/yangzhezjgs/python_web_dev_primer/tree/master/2-cgi
(3) 實(shí)現(xiàn)簡(jiǎn)單web應(yīng)用
核心知識(shí):web 表單,數(shù)據(jù)庫基礎(chǔ)知識(shí),Linux系統(tǒng)的環(huán)境變量
上一節(jié)的服務(wù)器其實(shí)沒有真正實(shí)現(xiàn)一個(gè)CGI服務(wù)器,缺少了用來傳遞數(shù)據(jù)的環(huán)境變量,新的代碼中會(huì)補(bǔ)全,同時(shí)一個(gè)web應(yīng)用程序需要和數(shù)據(jù)庫進(jìn)行交換,你需要了解數(shù)據(jù)庫的基本操作,比如安裝,新建數(shù)據(jù)庫數(shù)據(jù)表,基本的sql等。
學(xué)習(xí)步驟:
- 數(shù)據(jù)庫的基本知識(shí)
- Web表單的基本知識(shí)
- Linux下子進(jìn)程的環(huán)境變量
- 閱讀代碼
code:https://github.com/yangzhezjgs/python_web_dev_primer/tree/master/3-application
(4) 實(shí)現(xiàn)WSGI 服務(wù)器
WSGI服務(wù)器與CGI最大的區(qū)別在于,需要實(shí)現(xiàn)start_response函數(shù),以及通過解析http請(qǐng)求得到傳遞給應(yīng)用程序的environ字典。
學(xué)習(xí)步驟:
- 了解WSGI的基本概念
- 閱讀代碼
code:https://github.com/yangzhezjgs/python_web_dev_primer/tree/master/4-wsgi
(5) 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web框架
學(xué)習(xí)步驟:
- 了解裝飾器和__call__接口
- 閱讀代碼
code:https://github.com/yangzhezjgs/python_web_dev_primer/tree/master/5-framework
更深入的學(xué)習(xí)如何實(shí)現(xiàn)web框架:
werkzeug實(shí)現(xiàn)簡(jiǎn)單Python web框架(1):MVC模式
深入理解flask框架(1):WSGI與路由
相關(guān)參考:
深入理解 Python WSGI:一起寫一個(gè) Web 服務(wù)器
Python CGI編程
WSGI 簡(jiǎn)介
為什么需要web框架?
相關(guān)案例查看更多
相關(guān)閱讀
- 快排推廣
- 云南做網(wǎng)站
- 網(wǎng)站開發(fā)公司哪家好
- 小程序被攻擊
- 云南網(wǎng)站建設(shè)哪家好
- 汽車報(bào)廢
- 小程序的開發(fā)公司
- 小程序開發(fā)費(fèi)用
- 區(qū)塊鏈
- 前端
- 前端開發(fā)
- 搜索引擎優(yōu)化
- 云南網(wǎng)站建設(shè)高手
- 云南網(wǎng)站建設(shè)首選
- 人人商城
- 海南小程序制作公司
- 云南軟件開發(fā)
- 云南網(wǎng)頁制作
- 小程序被騙退款成功
- 小程序退款
- 汽車報(bào)廢系統(tǒng)
- 網(wǎng)站建設(shè)方案 doc
- 旅游網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)哪家公司好
- 保險(xiǎn)網(wǎng)站建設(shè)公司
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 云南網(wǎng)站制作
- 云南網(wǎng)站建設(shè)方法
- 小程序定制
- 云南微信小程序開發(fā)