新聞中心
下面詳細(xì)說明Python世界中的django,這種語言具有非常簡捷而清晰的語法特點(diǎn),適合完成各種高層任務(wù),幾乎可以在所有的操作系統(tǒng)中運(yùn)行,本文并不是django的教程,而是ahuaxuan對django的一些見解。

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十載企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都1000+客戶提供網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營銷型網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),同時(shí)也為不同行業(yè)的客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)公司。
可能有些不成熟的地方,希望大家不要吝惜手中的磚頭。如果有人問我最喜歡django什么,我會耗不猶豫的告訴你是django的orm。這個(gè)想法的產(chǎn)生完全來自于我長時(shí)間來積累的對hibernate的“不滿”,雖然從理智的角度來看,hibernate做的是非常的正確的,因?yàn)樗⒉皇侵会槍ミB網(wǎng)而產(chǎn)生的。它的主要市場應(yīng)該還是在企業(yè)應(yīng)用上。
不過把它用在互聯(lián)網(wǎng)并非不可以,只不過大家更多的時(shí)候會選擇ibatis之類,因?yàn)椴恢纇ibernate的人總是會說hibernate沒有ibatis快(其實(shí)我最煩這個(gè),片面的比較是沒有意義的)。
正是hibernate的目標(biāo)是打造成java界一個(gè)全方位,全能的orm框架,所以的它學(xué)習(xí)曲線和使用的復(fù)雜度日益的提升,要完全掌握好hibernate不是一件容易的事情(不要告訴我你會點(diǎn)crud,知道點(diǎn)lazy load你就掌握好hibernate了)。
再回頭來看django的orm,如果說要把hibernate說清楚需要800頁的書,那么要把django的orm說清楚,200頁就夠了(事實(shí)上它的官方文檔只有十幾頁的樣子)。
下面我舉一個(gè)我正在做的例子,這里有一個(gè)自關(guān)聯(lián)的對象(事實(shí)上django的orm是基于model,這點(diǎn)和ror不太一樣,有人跟我講過ror是數(shù)據(jù)庫驅(qū)動(dòng)),這個(gè)對象有一個(gè)父對象,通常我們的菜單會定義成這樣的對象,這樣的菜單可以無限級向下擴(kuò)展:
- class Category(models.Model):
- id = models.AutoField('id', primary_key=True)
- name = models.CharField(maxlength=50)
- code = models.CharField(maxlength=50)
- parentCategory = models.ForeignKey('self', 'id', null=True)
- enable = models.BooleanField()
- def __str__(self):
- return self.name
- class Admin:
- list_display = ('id', 'name', 'code', 'parentCategory')
Python世界中又定義的Admin是為django的Admin模塊服務(wù)的。 瞧,我們定義的域模型只需要這些代碼就夠了,models.Model是父對象。所有的model對象都需要繼承這個(gè)對象,這個(gè)對象提供了很多常用的數(shù)據(jù)庫方法,不過不是基于sql的,還是基于對象的,如同Criteria一樣。下面列出常用的一些查詢Category的方法。
當(dāng)然django的orm提供了很多很常用的功能,這里不一一舉例了,注意,這里我說的是提供了很多很常用的功能,至于hibenate中比較復(fù)雜的映射策略,在django中我并沒有看到。
但是我反而高興我沒有在Python世界中找到這個(gè)功能,因?yàn)閐jango本身的定位是快速的互連網(wǎng)開發(fā),它不需要太多的關(guān)注這個(gè)領(lǐng)域很少出現(xiàn)的東西,這樣帶來的優(yōu)點(diǎn)是學(xué)習(xí)曲線的降低和開發(fā)效率的提高。
當(dāng)前文章:Python世界中的Django學(xué)習(xí)探討
分享URL:http://m.fisionsoft.com.cn/article/dpcejoc.html


咨詢
建站咨詢
