Django開發(fā)實(shí)戰(zhàn)---創(chuàng)建第一個Django應(yīng)用(二)

? ?在第一部分我們完成了安裝以及簡單的創(chuàng)建工程和應(yīng)用氯窍,今天我們繼續(xù)學(xué)習(xí)后面的內(nèi)容。

一驳糯、數(shù)據(jù)庫設(shè)置

? ? ? ?首先我們打開我們的myfirstsite工程下的setting.py文件痘拆。

默認(rèn)配置使用的是sqlite數(shù)據(jù)庫,如果我們剛接觸數(shù)據(jù)庫或者只是對python感興趣除秀,默認(rèn)配置是最簡單的選擇。python自帶了sqlite算利,因此我們不需要額外安裝册踩。如果我們需要使用別的數(shù)據(jù)庫例如mysql、oracle效拭、postgresql等我們則需要得先安裝好數(shù)據(jù)庫(安裝過程這里不贅述暂吉,本文使用mysql),然后修改setting.py配置文件

我們將這里的ENGINE(類似java中mysql驅(qū)動)缎患,NAME(數(shù)據(jù)庫名) 配置項(xiàng)全部改為我需要的mysql配置慕的,另外需要配置數(shù)據(jù)庫用戶名和密碼,以及host地址端口號

當(dāng)然還有其他配置項(xiàng)较锡,具體參考https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-DATABASES

執(zhí)行

?python manage.py migrate?

執(zhí)行結(jié)束后我們 show tables 發(fā)現(xiàn)我們的庫里多了好多張表:


什么鬼业稼?怎么這么多表?通過官方文檔我了解到其實(shí)完全可以不要這些表蚂蕴,其實(shí)很簡單低散,只要我們在執(zhí)行python manage.py migrate 之前將myfirstsite/settings.py 文件中的INSTALLED_APPS配置項(xiàng)把我們不想要的刪掉即可。migrate 只會跑我們在INSTALLED_APPS中配置的app骡楼。

二熔号、創(chuàng)建模型

我們現(xiàn)在可以定義我們自己的模型了,我們就在我們先前創(chuàng)建的polls應(yīng)用里定義兩個吧鸟整,

?Question(問題) 和 Choice(選項(xiàng))引镊,Question 中我們可以頂問題描述和發(fā)布日期,而Choice中我們可以定義選項(xiàng)描述和投票記錄篮条。每一個Choice與一個Question關(guān)聯(lián)弟头。

我們創(chuàng)建的Question和Choice類均繼承models模塊的Model類,類中我們定義的屬性后續(xù)的代碼中會使用涉茧,而且會被Django當(dāng)作數(shù)據(jù)表的列名使用 比如 question_text 或者pub_date ,同時(shí)我們通過models模塊給這些屬性定義了類型赴恨,比如question_text = models.CharField(max_length=200) 我們告訴Django question_text 是一個字符串類型并且最大長度是200(后續(xù)學(xué)習(xí)中我們會發(fā)現(xiàn)不僅在數(shù)據(jù)庫有用,后面的validation校驗(yàn)也會很方便使用),pub_date=models.DateTimeField 告訴Django 伴栓,pub_date 是日期類型伦连。發(fā)現(xiàn),我們還使用了ForeignKey 聲明了Choice 和question的關(guān)聯(lián)關(guān)系钳垮。

? ? models中有許多屬性類是比傳參數(shù)的比如models.CharField 就必須設(shè)置max_length,當(dāng)然也是可以有一些可選參數(shù)的惑淳,例如choice_vote = models.IntegerField 我們設(shè)置的default值為0.

了解了這些models的屬性類,我們準(zhǔn)備開始激活我們新加的兩個model饺窿。激活之前我們必須得安裝我們的app歧焦,怎么安裝來著?對了肚医,在myfirstsite/settings.py 文件中的INSTALLED_APPS配置中添加我們的應(yīng)用就好了倚舀。

? ? 打開polls/app.py文件叹哭,我們發(fā)現(xiàn)早已經(jīng)有了一個PollsConfig類,那就簡單了:


我們只需要把這個PollsConfig類添加進(jìn)去就可以了痕貌。

配置好了之后我們執(zhí)行另外一條命令:

python manage.py makemigrations polls

這條命令其實(shí)就是告訴Django我們嗯polls的模型發(fā)生了改變风罩,我們這里是新建了兩個模型。

命令執(zhí)行成功舵稠。同時(shí)我們發(fā)現(xiàn)polls/migration目錄下多了一個0001_initial.py文件

我們準(zhǔn)備執(zhí)行這個文件超升,創(chuàng)建數(shù)據(jù)表結(jié)構(gòu),執(zhí)行命令:

python mange.py sqlmigrate polls 0001

執(zhí)行結(jié)束后我們發(fā)現(xiàn)打印出:

創(chuàng)建表的sql,然而我們發(fā)現(xiàn)數(shù)據(jù)庫里并沒有實(shí)際的創(chuàng)建表哺徊,這時(shí)候我們可以通過

?python?manage.py?check?命令去檢查 建表語句有沒有錯誤什么的

檢查好之后我們準(zhǔn)備真正的開始建表了:

python manage.py migrate?

執(zhí)行OK ,我們發(fā)現(xiàn)數(shù)據(jù)庫中多了兩張表(polls_quesion和polls_choice):


在我們開發(fā)的過程中難免會出現(xiàn)要修改表結(jié)構(gòu)或者新加或者刪除我們不想要的表室琢,那么migration對于我們來說非常重要。其實(shí)簡單總結(jié)一下就三步:

? ? ?1)修改模型class代碼(或新增模型落追,或刪除模型)

? ? ?2)執(zhí)行 python manage.py makgemigration 命令告訴Django 模型發(fā)生改變了

? ? ?3)執(zhí)行 python manage.py migration 命令讓Django真正的執(zhí)行我們所做的改變動作

三盈滴、調(diào)用API

執(zhí)行

python manage.py shell

進(jìn)入命令行

開始編寫代碼

先導(dǎo)入我們建好的model代碼,

查詢數(shù)據(jù)庫中的數(shù)據(jù)結(jié)果為空轿钠,new一個Question對象并保存:

發(fā)現(xiàn)我們的polls_question表中有了一條記錄:


修改q對象的question_text的值 并保存巢钓,然后我們再new 一個Question對象保存:

從圖中我們看到 第二次更改question_text 后再保存的時(shí)候 我們的庫中的值做了update操作

new出來的第二個對象插入是新插入表中了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疗垛,一起剝皮案震驚了整個濱河市症汹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贷腕,老刑警劉巖背镇,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泽裳,居然都是意外死亡瞒斩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門涮总,熙熙樓的掌柜王于貴愁眉苦臉地迎上來济瓢,“玉大人,你說我怎么就攤上這事妹卿。” “怎么了蔑鹦?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵夺克,是天一觀的道長。 經(jīng)常有香客問我嚎朽,道長铺纽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任哟忍,我火速辦了婚禮狡门,結(jié)果婚禮上陷寝,老公的妹妹穿的比我還像新娘。我一直安慰自己其馏,他們只是感情好凤跑,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叛复,像睡著了一般仔引。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褐奥,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天咖耘,我揣著相機(jī)與錄音,去河邊找鬼撬码。 笑死儿倒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呜笑。 我是一名探鬼主播夫否,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹈垢!你這毒婦竟也來了慷吊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤曹抬,失蹤者是張志新(化名)和其女友劉穎逸爵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體银酗,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膜毁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了张足。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片触创。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖为牍,靈堂內(nèi)的尸體忽然破棺而出哼绑,到底是詐尸還是另有隱情,我是刑警寧澤碉咆,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布抖韩,位于F島的核電站,受9級特大地震影響疫铜,放射性物質(zhì)發(fā)生泄漏茂浮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望席揽。 院中可真熱鬧顽馋,春花似錦、人聲如沸幌羞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新翎。三九已至程帕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間地啰,已是汗流浹背愁拭。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亏吝,地道東北人岭埠。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像蔚鸥,于是被迫代替她去往敵國和親惜论。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容