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