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