偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python世界中的Django學(xué)習(xí)探討

開(kāi)發(fā) 后端
經(jīng)過(guò)長(zhǎng)久的學(xué)習(xí)探討,我確實(shí)也發(fā)現(xiàn)Python與其他語(yǔ)言及其框架等確實(shí)有一種與眾不同的感覺(jué),那么下面就一起進(jìn)入Python世界吧。

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

可能有些不成熟的地方,希望大家不要吝惜手中的磚頭。如果有人問(wèn)我最喜歡django什么,我會(huì)耗不猶豫的告訴你是django的orm。這個(gè)想法的產(chǎn)生完全來(lái)自于我長(zhǎng)時(shí)間來(lái)積累的對(duì)hibernate的“不滿”,雖然從理智的角度來(lái)看,hibernate做的是非常的正確的,因?yàn)樗⒉皇侵会槍?duì)互連網(wǎng)而產(chǎn)生的。它的主要市場(chǎng)應(yīng)該還是在企業(yè)應(yīng)用上。

不過(guò)把它用在互聯(lián)網(wǎng)并非不可以,只不過(guò)大家更多的時(shí)候會(huì)選擇ibatis之類(lèi),因?yàn)椴恢纇ibernate的人總是會(huì)說(shuō)hibernate沒(méi)有ibatis快(其實(shí)我最煩這個(gè),片面的比較是沒(méi)有意義的)。

正是hibernate的目標(biāo)是打造成java界一個(gè)全方位,全能的orm框架,所以的它學(xué)習(xí)曲線和使用的復(fù)雜度日益的提升,要完全掌握好hibernate不是一件容易的事情(不要告訴我你會(huì)點(diǎn)crud,知道點(diǎn)lazy load你就掌握好hibernate了)。

再回頭來(lái)看django的orm,如果說(shuō)要把hibernate說(shuō)清楚需要800頁(yè)的書(shū),那么要把django的orm說(shuō)清楚,200頁(yè)就夠了(事實(shí)上它的官方文檔只有十幾頁(yè)的樣子)。

下面我舉一個(gè)我正在做的例子,這里有一個(gè)自關(guān)聯(lián)的對(duì)象(事實(shí)上django的orm是基于model,這點(diǎn)和ror不太一樣,有人跟我講過(guò)ror是數(shù)據(jù)庫(kù)驅(qū)動(dòng)),這個(gè)對(duì)象有一個(gè)父對(duì)象,通常我們的菜單會(huì)定義成這樣的對(duì)象,這樣的菜單可以無(wú)限級(jí)向下擴(kuò)展:

  1. class Category(models.Model):     
  2.     id = models.AutoField('id', primary_key=True)     
  3.     name = models.CharField(maxlength=50)     
  4.     code = models.CharField(maxlength=50)     
  5.     parentCategory = models.ForeignKey('self', 'id', null=True)     
  6.     enable = models.BooleanField()     
  7.          
  8.     def __str__(self):     
  9.         return self.name     
  10.          
  11.     class Admin:     
  12.         list_display = ('id', 'name', 'code', 'parentCategory')   

Python世界中又定義的Admin是為django的Admin模塊服務(wù)的。 瞧,我們定義的域模型只需要這些代碼就夠了,models.Model是父對(duì)象。所有的model對(duì)象都需要繼承這個(gè)對(duì)象,這個(gè)對(duì)象提供了很多常用的數(shù)據(jù)庫(kù)方法,不過(guò)不是基于sql的,還是基于對(duì)象的,如同Criteria一樣。下面列出常用的一些查詢Category的方法。

當(dāng)然django的orm提供了很多很常用的功能,這里不一一舉例了,注意,這里我說(shuō)的是提供了很多很常用的功能,至于hibenate中比較復(fù)雜的映射策略,在django中我并沒(méi)有看到。

但是我反而高興我沒(méi)有在Python世界中找到這個(gè)功能,因?yàn)閐jango本身的定位是快速的互連網(wǎng)開(kāi)發(fā),它不需要太多的關(guān)注這個(gè)領(lǐng)域很少出現(xiàn)的東西,這樣帶來(lái)的優(yōu)點(diǎn)是學(xué)習(xí)曲線的降低和開(kāi)發(fā)效率的提高。

【編輯推薦】

  1. 如何使Python嵌入C++應(yīng)用程序?
  2. 深入探討Ruby與Python語(yǔ)法比較
  3. Python學(xué)習(xí)資料介紹分享
  4. Python學(xué)習(xí)經(jīng)驗(yàn)談:版本、IDE選擇及編碼解 決方案
  5. 淺析Python的GIL和線程安全
責(zé)任編輯:chenqingxiang 來(lái)源: 騰訊科技
相關(guān)推薦

2010-03-01 15:08:36

2020-01-15 12:43:51

人工智能機(jī)器學(xué)習(xí)工程師

2010-04-16 16:41:53

rownum用法

2024-01-26 08:31:49

2017-12-19 15:24:21

DjangoPythonOracle

2011-06-11 22:09:06

NET聯(lián)合體

2011-07-12 09:18:50

.NET

2010-02-06 14:23:49

Android系統(tǒng)手機(jī)

2024-03-07 12:40:28

Python*args開(kāi)發(fā)

2014-07-31 13:13:33

2023-10-23 12:35:36

Golang追加操作

2023-12-13 10:46:27

2011-03-22 10:31:57

Java

2022-03-31 10:05:32

JavaScriptInfinity變量

2009-12-17 13:33:14

VS2005類(lèi)

2018-05-11 14:34:24

人工智能機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2017-05-03 15:58:29

2010-07-21 16:26:27

telnet程序

2009-07-01 09:43:40

WCF安全元數(shù)據(jù)

2024-10-15 16:01:19

SpringBoot緩存預(yù)熱
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)