新聞中心
如果你安裝了Python應(yīng)用程序,這些功能都是可用的除了標(biāo)準(zhǔn)庫(kù)以外,還有許多其他高質(zhì)量的庫(kù),如wxPython、Twisted和Python圖形庫(kù)等等數(shù)不勝數(shù),希望大家能夠進(jìn)行學(xué)習(xí)研究。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供公安企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為公安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
最復(fù)雜功能最強(qiáng)大的還是freemarker,支持jsp tag的嵌入讓我們可以重用很多已經(jīng)存在的組件,這一點(diǎn)我在之前的文章中也有過(guò)比較詳細(xì)的描述(強(qiáng)強(qiáng)聯(lián)手,看freemarker和displaytag的結(jié)合)。由于了解,才有發(fā)言權(quán),django的模板可以說(shuō)是為互連網(wǎng)應(yīng)用而誕生的,簡(jiǎn)潔及快速開(kāi)發(fā)的特點(diǎn)讓人情不自禁的喜歡。
關(guān)于jsp的題外話(huà),不管是ruby,還是c++,還是Python應(yīng)用程序,在它們的web框架中都使用了模板,java中也有很多模板。我們最熟悉的是freemarker和velocity。這從一個(gè)側(cè)面反映出我們web開(kāi)發(fā)中的一個(gè)模式,那就是我們的view基本上是基于模板產(chǎn)生的。
而jsp這個(gè)東西應(yīng)該來(lái)說(shuō)是時(shí)代的產(chǎn)物,在那個(gè)混亂的落后的時(shí)代產(chǎn)生的,不過(guò)很奇怪的是現(xiàn)在還有這么多人抱著它不放。Django有兩種form,一種是自己定義form class,還有一種是通過(guò)我們定義的model自動(dòng)form class。 由于ahuaxuan只做 了一個(gè)信息發(fā)布的小例子。
所以并不能全面的了解或者理解django中form的所有細(xì)節(jié),不過(guò)從我涉及到的部分來(lái)講,我對(duì)django的從模型創(chuàng)建表單的做法確實(shí)感到有比較大的局限性。因?yàn)楹芏鄷r(shí)候,model中的數(shù)據(jù) 并不是從頁(yè)面上來(lái)的,在這種情況下,form對(duì)象被構(gòu)造出來(lái)之后,ahuaxuan還沒(méi)有找到修改form中值的方法。
而自定義form類(lèi)也比較麻煩,就是要寫(xiě)自己的model,這個(gè)和我們之前的做法比較不一樣,這里的form代表我們java中的value object,model是domain object。在我們的ssh框架中我們通常把value object繼承我們的domain object。雖然一堆又一堆的人提出了反對(duì)意見(jiàn),說(shuō)要把這兩個(gè)對(duì)象分開(kāi)。
因?yàn)樗麄兲幵诓煌膶哟沃校菑膶?shí)踐經(jīng)驗(yàn)中,我們可以看到,這樣做沒(méi)有什么不好。而在django中自定義form和model分開(kāi)的行為可能比較符合一些人的心理。 不過(guò)自定義forms也有比較讓人稱(chēng)道的地方,在form中我們可以自定義驗(yàn)證規(guī)則,同時(shí)我們可以根據(jù)form對(duì)象直接生成頁(yè)面中的內(nèi)容。
不過(guò)這一點(diǎn)其實(shí)也有比較麻煩的地方,就是如果要改變樣式的時(shí)候就比較麻煩。不過(guò)總的來(lái)說(shuō)django的form還是比較有特點(diǎn)的,而且一定程度上給我們帶來(lái)了方便。 Django的url轉(zhuǎn)發(fā)是基于正則表達(dá)式的,有的人叫好,有的人叫差,我就是叫差的那一撥人之一。url轉(zhuǎn)發(fā)應(yīng)該是一個(gè)非常清楚,非常明亮的事情。
可是用上這個(gè)正則表達(dá)式匹配的東西之后,我郁悶了,所以我只能回到遙遠(yuǎn)的過(guò)去去繞過(guò)這個(gè)東東,我不用總可以了吧。從形式上來(lái)看,兩者出奇的相似,比如說(shuō)傳入的參數(shù)等。我們知道python是面向?qū)ο蟮恼Z(yǔ)言,但是事實(shí)上它也支持函數(shù)編程,如果def定義在class內(nèi)部。
那么就是對(duì)象的方法,否則,就可以認(rèn)為是函數(shù)編程了,看看,我們的views里的東西都是函數(shù),views其實(shí)是一個(gè)模塊,這個(gè)模塊我們可以認(rèn)為是struts1.x中的action,而views中的函數(shù)可以認(rèn)為是action中的方法。它們是遠(yuǎn)房親戚。
Python應(yīng)用程序的admin功能號(hào)稱(chēng)是django的殺手級(jí)特性(killer feature),這一說(shuō)可以說(shuō)是恰如其分,毫不夸張的,從我做的這個(gè)例子來(lái)看,當(dāng)我做網(wǎng)站的時(shí)候,基本上只需要關(guān)注前臺(tái)頁(yè)面的展示這部分。
后臺(tái)的功能基本上都自動(dòng)有了,比如我做的例子是一個(gè)二手信息發(fā)布平臺(tái),category是二手信息的類(lèi)型,還有一個(gè)information類(lèi),和category是多對(duì)一的關(guān)系,那么在后臺(tái),category和information的crud就自動(dòng)生產(chǎn)了,由于category本身是一個(gè)自關(guān)聯(lián),所以在admin中 add category的時(shí)候,admin會(huì)根據(jù)我model的定義。
自動(dòng)要求選擇一個(gè)parentCategory,而在add information的頁(yè)面上,admin會(huì)要求我選擇一個(gè)category來(lái)完成對(duì)一個(gè)information的創(chuàng)建,而以前在java中,這些工作都需要自己完成,當(dāng)然也有很多工具可以自動(dòng)生產(chǎn)crud。
不過(guò)這些開(kāi)源的工具基本上都是針對(duì)單個(gè)model的,而且生成的代碼需要很大修改才能真正的把功能跑起來(lái),最重要的一點(diǎn)是不能自動(dòng)生成關(guān)聯(lián)關(guān)系的管理。當(dāng)然我也見(jiàn)過(guò)有公司做了基于數(shù)據(jù)庫(kù)驅(qū)動(dòng)的代碼生產(chǎn)器。
能生成完整可用的代碼和頁(yè)面,也包括關(guān)聯(lián)關(guān)系的處理,不過(guò)由于語(yǔ)言特性的區(qū)別,在開(kāi)發(fā)的時(shí)候我們還是要不停的重啟server才能顯示出效果來(lái),雖然在技術(shù)上,為ssh實(shí)現(xiàn)這個(gè)功能并不難,但是會(huì)消耗不少時(shí)間在上面,消耗了很多時(shí)間的話(huà),很少就有公司將其貢獻(xiàn)出來(lái)了。
所以個(gè)人認(rèn)為django在這個(gè)功能上做得還是非常不錯(cuò)的,尤其這個(gè)功能可以節(jié)省開(kāi)發(fā)者很多的時(shí)間。甚至有些時(shí)候,項(xiàng)目可以雙線(xiàn)執(zhí)行,用戶(hù)通過(guò)admin輸入數(shù)據(jù),程序員開(kāi)發(fā)前臺(tái),這樣,前臺(tái)功能做完之后,數(shù)據(jù)也有了,基本可以測(cè)試上線(xiàn)了。在需要快速開(kāi)發(fā)的小項(xiàng)目上,這個(gè)特性顯得尤其重要,因?yàn)閐jango產(chǎn)生得時(shí)候就是基于這個(gè)場(chǎng)景。
當(dāng)然有時(shí)候后臺(tái)也沒(méi)有這么簡(jiǎn)單,不過(guò)還好,admin提供了擴(kuò)展的功能,我們可以自己寫(xiě)擴(kuò)展的代碼,然后集成到admin中去,不過(guò)事實(shí)上除了能改變admin的模板,我們不能改變?nèi)魏蝍dmin的代碼。
不過(guò)我時(shí)常在想,如果admin支持代碼自動(dòng)生成的功能,那豈不是很美妙,我們可以隨意的修改后臺(tái)的功能了,否則我們就需要自己寫(xiě)代碼,不如在生成的代碼上擴(kuò)展方便。 要使用admin。
必須打開(kāi)django的權(quán)限模塊,這里簡(jiǎn)單介紹一下權(quán)限模塊,django自帶了一個(gè)權(quán)限模塊,這個(gè)權(quán)限模塊中的model對(duì)于熟悉權(quán)限這塊的人來(lái)說(shuō)再熟悉不過(guò)了,user,group,permission,user和group多對(duì)多。
Python應(yīng)用程序和permission多對(duì)多,在acegi中,我們通常這樣定義,user,role,resource,這個(gè)和django中的權(quán)限是一樣的,不過(guò)在django中默認(rèn)的permission的粒度是非常的粗了,是基于model的,如果我們要更細(xì)的權(quán)限模塊,那么就需要自己擴(kuò)展了。
【編輯推薦】
- 有關(guān)Python系統(tǒng)文件進(jìn)行介紹指導(dǎo)
- 如何正確的使用Python函數(shù)
- 對(duì)Python 構(gòu)建工具進(jìn)行詳細(xì)介紹分析
- PythonAndroid淺析Python優(yōu)勢(shì)所在
- 如何使用Python模塊解析配置文件?
網(wǎng)站題目:述說(shuō)正確安裝Python應(yīng)用程序過(guò)程
文章起源:http://fisionsoft.com.cn/article/djochoh.html


咨詢(xún)
建站咨詢(xún)
