Django弄表格的方法

這篇文章給大家分享的是有關(guān)Django弄表格的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)十余年來(lái)致力于為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都品牌網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上千余家網(wǎng)站,包括各類(lèi)中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

Django中,與數(shù)據(jù)庫(kù)相關(guān)的模塊是model模塊,它提供了一種簡(jiǎn)單易操作的API方式與數(shù)據(jù)庫(kù)交互,它是通過(guò)ORM映射的方式來(lái)操作數(shù)據(jù)庫(kù),一個(gè)類(lèi)對(duì)應(yīng)數(shù)據(jù)庫(kù)一張表,一個(gè)類(lèi)屬性,對(duì)應(yīng)該表的一個(gè)字段,一個(gè)實(shí)例化的類(lèi)對(duì)象就是一個(gè)表中的一行數(shù)據(jù)信息。在開(kāi)發(fā)的階段,工程師只需要python語(yǔ)言本身進(jìn)行代碼設(shè)計(jì),而不用太過(guò)于分散注意力去操作SQL原生操作語(yǔ)句,這樣的方法既有它的優(yōu)點(diǎn),同樣也有不足之處。

它們優(yōu)缺點(diǎn)的大致如下:

優(yōu)點(diǎn):

1、實(shí)現(xiàn)了代碼與數(shù)據(jù)庫(kù)的解耦合

2、開(kāi)發(fā)者不需要操作太多的原生SQL,可以提高開(kāi)發(fā)效率

3、防止SQL注入,通過(guò)對(duì)象操作的方式,默認(rèn)就是防止SQL注入

缺點(diǎn):

1、犧牲性能,對(duì)象轉(zhuǎn)換到SQL會(huì)存在一定的消耗

2、當(dāng)需要操作較復(fù)雜的語(yǔ)句時(shí),用ORM對(duì)象操作的方式很難實(shí)現(xiàn)

 ORM與數(shù)據(jù)庫(kù)的映射關(guān)系如下:

表名--------》類(lèi)名

字段--------》屬性

表記錄-----》類(lèi)實(shí)例化對(duì)象

 ORM的兩大主要功能:

操作表:

--創(chuàng)建表

--修改表

--刪除表

操作表數(shù)據(jù)行:增、刪、改、查

Django自帶的數(shù)據(jù)庫(kù)為sqlite3,如果需要使用其他數(shù)據(jù)庫(kù),需要其他的準(zhǔn)備工作,并且,使用其他數(shù)據(jù)庫(kù),需要自己提前建好數(shù)據(jù)庫(kù),然后通過(guò)Django去連接,Django并不會(huì)創(chuàng)建數(shù)據(jù)庫(kù)。

完整過(guò)程:

一、編寫(xiě)模型類(lèi)

在Django項(xiàng)目的APP應(yīng)用下的models.py文件中編寫(xiě)類(lèi),每一個(gè)類(lèi)就是一個(gè)最終都會(huì)被映射為一個(gè)數(shù)據(jù)表。在寫(xiě)類(lèi)之前有個(gè)準(zhǔn)備工作,在settings.py文件中的“INSTALLED_APPS”要先加入自己的APP應(yīng)用,告訴Django有這個(gè)應(yīng)用。如圖:

Django弄表格的方法

表分為單表,一對(duì)一表,一對(duì)多表,多對(duì)多表,就是表一般不會(huì)獨(dú)立存在,總會(huì)與其他表存在聯(lián)系。我創(chuàng)建了三個(gè)表,一個(gè)表為Publish(出版社),一個(gè)表為Author(作者),還有一個(gè)表Book(書(shū)籍),其中表書(shū)籍與表出版社是外鍵關(guān)系,與作者是多對(duì)多的關(guān)系。

 class Publish(models.Model):
 2     name = models.CharField(max_length=64)
 3     city = models.CharField(max_length=63,null=True)
 4     def __str__(self):
 5         return self.name
 6 
 7 
 8 class Author(models.Model):
 9     name = models.CharField(max_length=30)
10     sex = models.CharField(max_length=20)
11     def __str__(self):
12         return self.name
13 
14 class Book(models.Model):
15     title = models.CharField(max_length=64)
16     price = models.IntegerField()
17     color = models.CharField(max_length=64)
18     page_num = models.IntegerField(null=True)
19     publisher = models.ForeignKey("Publish",on_delete=models.CASCADE,null=True)  
#一對(duì)多的關(guān)系。2.0django中,當(dāng)有主外鍵和其他對(duì)應(yīng)關(guān)系時(shí),需要設(shè)置。
20     author = models.ManyToManyField("Author")
21     def __str__(self):
22         return  self.title

二、生成數(shù)據(jù)表

創(chuàng)建類(lèi)的代碼已經(jīng),寫(xiě)好,此時(shí)需要兩句代碼將類(lèi)轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)表:

python manage.py makemigrations    #將類(lèi)轉(zhuǎn)換成數(shù)據(jù)表結(jié)構(gòu)
python manage.py  migrate               #根據(jù)上一句代碼生成數(shù)據(jù)表

上面兩句代碼先后執(zhí)行,不出意外,就會(huì)在數(shù)據(jù)庫(kù)里面生成對(duì)應(yīng)的數(shù)據(jù)表。其中,第一句執(zhí)行完,會(huì)在app應(yīng)用下的migrations的文件夾下生成操作的記錄文件“0001_initial.py”:

Django弄表格的方法

這個(gè)是記錄models里面改動(dòng)的執(zhí)行記錄。

最終生成的數(shù)據(jù)表如下:

Django弄表格的方法

感謝各位的閱讀!關(guān)于Django弄表格的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

當(dāng)前標(biāo)題:Django弄表格的方法
URL分享:http://muchs.cn/article46/jopphg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)