python作為解釋型腳本言語(yǔ),是一種通用的編程言語(yǔ)。因?yàn)閜ython社區(qū)具有很多的庫(kù)文件、結(jié)構(gòu)和其他的一些實(shí)用東西,咱們能夠用python完結(jié)各式各樣的任務(wù)。另外,因?yàn)閜ython的代碼構(gòu)成和結(jié)構(gòu)就像英語(yǔ)句子相同天然,這種言語(yǔ)的學(xué)習(xí)曲線也比較平緩。因而和其他言語(yǔ)比較,好多網(wǎng)站開(kāi)發(fā)人員更喜歡用python來(lái)保證代碼的可讀性。
可是,python一開(kāi)端被規(guī)劃出來(lái)的時(shí)候,并沒(méi)有特別傾向于網(wǎng)站開(kāi)發(fā)。正是因?yàn)檫@個(gè)原因,咱們?cè)谶\(yùn)用python做網(wǎng)站時(shí),就不得不憑借數(shù)量繁多的web開(kāi)發(fā)結(jié)構(gòu)。在這篇文章里,咱們聊一聊2021年將會(huì)盛行的web結(jié)構(gòu)。
圖片
最實(shí)用的結(jié)構(gòu)列表:咱們總結(jié)的5個(gè)
經(jīng)過(guò)很多的實(shí)驗(yàn)總結(jié),咱們整理了5個(gè)最實(shí)用、最好用的結(jié)構(gòu)。下面讓咱們細(xì)細(xì)道來(lái):
Django
排位榜首的當(dāng)然是Django。事實(shí)上,正是因?yàn)镈jango的存在,成百上千的網(wǎng)站項(xiàng)目才干成功,python才干成為網(wǎng)站開(kāi)發(fā)中最常用的言語(yǔ)。包含 Instagram, Mozilla Firefox, National Geographic, Pinterest, NASA等在內(nèi)的大型機(jī)構(gòu)、公司,都在運(yùn)用Django作為網(wǎng)站開(kāi)發(fā)結(jié)構(gòu)。
這也便是為什么對(duì)于大多數(shù)網(wǎng)站開(kāi)發(fā)者來(lái)說(shuō),假如運(yùn)用python作為開(kāi)發(fā)言語(yǔ),那么Django便是唯一一個(gè)最常被提及的結(jié)構(gòu)。尤其是因?yàn)橄旅娴囊恍┨匦院烷L(zhǎng)處,Django CMS總是作為網(wǎng)站開(kāi)發(fā)中最基礎(chǔ)、最常用的辦理系統(tǒng):
1、有好多拿來(lái)就能直接運(yùn)用的模板
2、操作數(shù)據(jù)庫(kù)
3、面向?qū)ο蟮木幊剔k法
4、網(wǎng)絡(luò)地址映射
5、內(nèi)置網(wǎng)站服務(wù)器
6、能夠運(yùn)用HTML表單獲取數(shù)據(jù),并傳遞給服務(wù)器(在Django中完成這一功用實(shí)在是太簡(jiǎn)略了,以至于菜鳥(niǎo)也能輕松運(yùn)用)
7、安全可靠的用戶權(quán)限
8、直觀的辦理界面
9、強(qiáng)壯的XML/JSON處理功用
因?yàn)樯厦嬲f(shuō)到的這些方面,Django能夠擔(dān)任各種大型網(wǎng)站項(xiàng)目。你對(duì)這個(gè)結(jié)構(gòu)心動(dòng)了嗎?假如沒(méi)有,那咱們看下一個(gè)。
CherryPy
CherryPy是僅次于Django的網(wǎng)站開(kāi)發(fā)結(jié)構(gòu),它最大的特性便是能夠一起運(yùn)行好幾個(gè)web服務(wù)。Django和CherryPy最大的區(qū)別在于,后者沒(méi)有像前者那樣多的模板,而是供給能夠?qū)氲膸?kù)文件。事實(shí)上,這種方式給開(kāi)發(fā)者以很大的自在度和擴(kuò)展性,程序員能夠自在的挑選運(yùn)用或許禁用各種模板、用戶權(quán)限和數(shù)據(jù)庫(kù)。
除此之外,CherryPy事實(shí)上是一個(gè)根據(jù)Python的簡(jiǎn)約而不簡(jiǎn)略的HTTP結(jié)構(gòu),允許和一切類(lèi)型的服務(wù)器(如Apache等)進(jìn)行交互。假如你是剛剛接觸網(wǎng)站開(kāi)發(fā),一定要記住在項(xiàng)目中最好形成一套自己用著順手的東西調(diào)集(咱們應(yīng)該清楚地知道,CherryPy具有靈敏強(qiáng)壯的插件系統(tǒng))。
TurboGears
TurboGears是一種MVC架構(gòu)的網(wǎng)站開(kāi)發(fā)結(jié)構(gòu),它根據(jù)一些WSGI組件(比方SQLAlchemy, Ming, Repoze等)、模板引擎( Genshi, Kajiki, Cheetah, Myghty)和很多的庫(kù)文件以及中間件(middleware)。一起它具有 widgets控件,能夠十分方便的生成一些特定的功用。
TurboGears的首要特色是:用FormEncode進(jìn)行表單驗(yàn)證;運(yùn)用 Gearbox作為項(xiàng)目辦理東西,并供給網(wǎng)絡(luò)服務(wù)(新的版別也支撐運(yùn)用Apache或許Nginx作為服務(wù)器);許多實(shí)用的指令行東西;支撐MochiKit模塊,一種處理文本內(nèi)容的genshi模板引擎,一起包含創(chuàng)立UI和Tosca Widgets的庫(kù)文件。這些常用功用給程序員帶來(lái)的方便,是其他結(jié)構(gòu)所不能代替的。還有一點(diǎn)——許多運(yùn)用TurboGears的程序員都會(huì)推薦它的精簡(jiǎn)形式,也便是說(shuō),TurboGears能夠裝備成最輕量級(jí)的結(jié)構(gòu)。
Flask
Flask是一個(gè)相當(dāng)新的結(jié)構(gòu),他的開(kāi)發(fā)者在深入完全的研討了現(xiàn)有的各種結(jié)構(gòu)后,分析了它們利害,在此基礎(chǔ)上開(kāi)發(fā)出了這一個(gè)取一切精華,去一切糟粕的web結(jié)構(gòu)。
Flask是一個(gè)輕量級(jí)結(jié)構(gòu),簡(jiǎn)略易學(xué),它在一些僅有一兩個(gè)功用的小型項(xiàng)目上得到了很多運(yùn)用。比方httpbin這樣的項(xiàng)目,簡(jiǎn)略但十分強(qiáng)壯。跟CherryPy差不多,支撐一切的DBMS和模板引擎。Flask的優(yōu)勢(shì)在于具有眾多的擴(kuò)展東西來(lái)創(chuàng)立根據(jù)網(wǎng)站的運(yùn)用(應(yīng)當(dāng)鼓勵(lì)初學(xué)者多運(yùn)用這些東西),它的代碼同樣簡(jiǎn)潔明了(只要3行代碼就能搭建一個(gè)顯現(xiàn)“Hello World”的主頁(yè)),經(jīng)過(guò)藍(lán)圖(blueprint)完成模塊化辦理,支撐Django官方模板言語(yǔ)Jinja2,能夠創(chuàng)立根據(jù)API的計(jì)劃和一次性東西(用其他結(jié)構(gòu)完成這些功用的話,既費(fèi)時(shí)又吃力)。
Pyramid
咱們說(shuō)到的最終一個(gè)結(jié)構(gòu)是Pyramid,它由Pylons項(xiàng)目中的一部分演化而來(lái)。Pyramid最大的特點(diǎn)便是靈敏性和可擴(kuò)展性(尤其和Django比較)。在運(yùn)用Pyramid時(shí),程序員能夠自在的挑選運(yùn)用什么樣的數(shù)據(jù)庫(kù)、URL結(jié)構(gòu)、模板風(fēng)格等等,正如這個(gè)結(jié)構(gòu)的開(kāi)發(fā)者所說(shuō):
“那些重量級(jí)的結(jié)構(gòu)都在替用戶做決議??墒羌偃邕@些不適合你,你也無(wú)可奈何;輕量級(jí)的結(jié)構(gòu)不替你做決議,你能夠很快的上手。可是跟著你的網(wǎng)站越做越大,你就會(huì)發(fā)現(xiàn)小結(jié)構(gòu)限制了你的大項(xiàng)目。上面這兩種情況,都是只關(guān)注項(xiàng)目的開(kāi)端階段:不是太大便是太小,換句話說(shuō),在項(xiàng)目剛開(kāi)端的時(shí)候,你并不能真實(shí)的預(yù)測(cè)到項(xiàng)目后期會(huì)有多大、功用會(huì)有多雜亂。你需求一個(gè)重視網(wǎng)站后期開(kāi)發(fā)的結(jié)構(gòu),這樣不論你的項(xiàng)目后期是大是小,它都能很好地滿意你的需求。Pyramid便是這樣一個(gè)結(jié)構(gòu),可大可小,剛剛好?!?
運(yùn)用Pyramid,能夠不費(fèi)勁的利用SQLAI創(chuàng)立傳統(tǒng)的RDBMS運(yùn)用。和Flask相同,Pyramid支撐多種類(lèi)型的模板言語(yǔ)和引擎,包含Jinja2和Mako,而且它自己也內(nèi)置有解決計(jì)劃。乃至,它還兼容Chameleon——一個(gè)便捷的、通用的ZPT模板東西。
Pyramid被咱們廣泛認(rèn)可的長(zhǎng)處包含:能夠?qū)⒁粋€(gè)完整的網(wǎng)站生成一個(gè)單一的文件;能夠修改的模板;可裝備的資源;靈敏的身份驗(yàn)證和授權(quán);高檔的引導(dǎo)東西——pcreate;根據(jù)view的辦法;支撐指令型和陳述型的裝備語(yǔ)法;HTTP緩存;內(nèi)建Session會(huì)話等等。一般而言,Pyramid是現(xiàn)在最盛行的構(gòu)建大中小型運(yùn)用的結(jié)構(gòu)。另一方面,正是因?yàn)檫@么強(qiáng)壯的靈敏性,可能會(huì)讓一些有挑選困難癥的初學(xué)者糾結(jié)于運(yùn)用哪些功用,假如挑選欠好,可能會(huì)掉進(jìn)一個(gè)又一個(gè)的坑里去。
挑選Python web結(jié)構(gòu):怎樣防止過(guò)錯(cuò)的挑選
讓咱們總結(jié)一下。正如你所看到的,咱們?cè)谔暨x適宜的結(jié)構(gòu)時(shí),應(yīng)該是根據(jù)本身的需求和項(xiàng)目的特點(diǎn),因地制宜。對(duì)于上面的幾個(gè)結(jié)構(gòu),我都一視同仁,我并不堅(jiān)持認(rèn)為哪一個(gè)更好或許更差。