一站式Python開發(fā)框架簡(jiǎn)評(píng)之—Django
談到框架使用經(jīng)驗(yàn),我相信很多開發(fā)者都能寫出一套屬于自己的框架實(shí)踐手冊(cè)。很多人都說“開源”是未來技術(shù)發(fā)展的方向,2013這一年,更是開源框架活躍在開發(fā)者視線的一年。
不同于Ruby語(yǔ)言中Rails呈現(xiàn)霸主地位,JavaScript、Python、PHP等領(lǐng)域的框架出現(xiàn)“百家爭(zhēng)鳴”的現(xiàn)象。小編今天不談JavaScript框架,因?yàn)榻衲暌呀?jīng)說的太多了。而另一腳本語(yǔ)言PHP,雖然也有不少的框架,但遠(yuǎn)沒有Python框架之勢(shì)。所以,今天我們來談?wù)凱ython框架。
如果從繁多的Python框架中挑出一個(gè)***的、最壯碩的框架。一定是Django無疑了。Google App Engine甚至Erlang都有框架受它影響。要說Django讓眾多開發(fā)者駐足的原因,最最最重要的應(yīng)當(dāng)是Django擁有和其他框架相比最完善的官方文檔。當(dāng)然肯定還會(huì)有其他的原因,但只有這一因素,小編敢打保票沒有人會(huì)反對(duì)。因此,Django成功的很大一部分原因要?dú)w功于此。
Django還有很多的有點(diǎn),最出名的是其全自動(dòng)化的管理后臺(tái):只需要使用起ORM,做簡(jiǎn)單的對(duì)象定義,就可以自動(dòng)生成數(shù)據(jù)庫(kù)結(jié)構(gòu)、以及全功能的管理后臺(tái)。如此方便的功能實(shí)現(xiàn),背后同時(shí)意味著Django內(nèi)置的ORM跟框架內(nèi)的其他模塊耦合程度高。所有的應(yīng)用程序都默認(rèn)使用Django內(nèi)置的ORM,否則,就不能享受框架內(nèi)部提供的一系列基于其ORM的功能。
Django有個(gè)很有意思的模板系統(tǒng)設(shè)計(jì),卻也是其框架內(nèi)影響***、爭(zhēng)議***的部分。
從Django模板的設(shè)計(jì)哲學(xué)角度出發(fā),它將代碼、樣式分離。但其設(shè)計(jì)理念與Asp.net提倡的將代碼和模板分離有所不同。Asp.net雖倡導(dǎo)此種模式,但在技術(shù)上還是能混合的。而Django則是從根本上杜絕在模板中進(jìn)行編碼、處理數(shù)據(jù)的可能。
舉個(gè)簡(jiǎn)單的例子:
- <%
- int i;
- for(i==0;i<10;i++){
- ....
- }
- %>
類似上面這種代碼,Django是徹底不支持的。函數(shù)的使用上,僅限于其模板的內(nèi)置函數(shù)。換句話說,實(shí)際是為其模板構(gòu)造了一種“新語(yǔ)言”。不過“新語(yǔ)言”簡(jiǎn)單易懂,能很輕松的將其模板移植到不同的平臺(tái)。
基于上述原因,是否容忍在模板中編程,成了Django模板爭(zhēng)議的***之處。在大多數(shù)情況下,Django模板能夠滿足一切需求。如遇“特殊”情況,不得不在模板中嵌入代碼的時(shí)候,就要根據(jù)模板的規(guī)則進(jìn)行擴(kuò)展。只是有時(shí)候,模板中直接寫一行代碼能夠解決的問題,用模板擴(kuò)展實(shí)現(xiàn)后,會(huì)變成十幾行代碼。這樣看來,怎么都是麻煩了。
宗上所述,就Django的特性而言,Django更適合中小型網(wǎng)站的建設(shè),或者是作為大型網(wǎng)站快速實(shí)現(xiàn)產(chǎn)品雛形的工具。