? Django 基礎(chǔ)

MVC/MVT 框架

MVC是一種編寫代碼的邏輯上的分割模型,即把代碼分為三大部分:M反番、V沙热、C叉钥,每部分明確的負(fù)責(zé)一個(gè)層面。這樣的作用是什么篙贸?那就是為了日后更方便的代碼維護(hù)投队、代碼遷移和代碼重構(gòu)等。

參考Wiki:Model–view–controller

傳統(tǒng)的MVC(Model-View-Control)模型適用于大多數(shù)的桌面App和網(wǎng)絡(luò)App的程序編寫爵川。
Model模型(負(fù)責(zé)數(shù)據(jù)庫(kù)) -> View視圖(負(fù)責(zé)將數(shù)據(jù)顯示為最終界面) -> Controller控制器(負(fù)責(zé)將用戶請(qǐng)求轉(zhuǎn)化為界面或數(shù)據(jù)庫(kù)的改動(dòng))敷鸦。

image
image

Django的代碼結(jié)構(gòu)是典型的MVC框架。只是具體實(shí)施上寝贡,它把視圖View作為一個(gè)Router路由來(lái)負(fù)責(zé)不同URL映射到不同的處理方法扒披,然后用Template模版來(lái)作為動(dòng)態(tài)顯示,所以也叫MVT模型圃泡。(其實(shí)這么叫非常不準(zhǔn)確碟案,所以提到MVT的人不多)

image
image

注意:網(wǎng)路上對(duì)MVC和MVT的說(shuō)法、圖解都各有不一洞焙,因?yàn)楹芏嗳藢?duì)這些叫法和結(jié)構(gòu)都產(chǎn)生了混淆。所以不能太依賴各種非官方的文章和圖片拯啦。

了解Django的這種“代碼結(jié)構(gòu)”有什么作用澡匪?
因?yàn)镈jango是一個(gè)以及成熟開(kāi)發(fā)的網(wǎng)絡(luò)App,我們要做的只是改一改具體業(yè)務(wù)信息即可褒链。正因?yàn)樗且呀?jīng)完整開(kāi)發(fā)的App唁情,所以我們要清楚他開(kāi)發(fā)的結(jié)構(gòu)是什么,才知道哪種需求到哪里去改甫匹。

ORM模型

Object-Relations-Mappings甸鸟,實(shí)際上是Object -> Mappings -> Relations這種方向,即:

把業(yè)務(wù)抽象為程序中的Object對(duì)象兵迅,然后通過(guò)一種Mappings方法抢韭,映射為Relational數(shù)據(jù)庫(kù)的表格中去。

簡(jiǎn)而言之恍箭,ORM實(shí)際上是一種操作數(shù)據(jù)庫(kù)的模型刻恭,或是一套操作數(shù)據(jù)庫(kù)的方法

Django中提供了一套完善的ORM模型扯夭,即一個(gè)工具包鳍贾,讓你輕松把自己創(chuàng)建的業(yè)務(wù)對(duì)象和數(shù)據(jù)庫(kù)里的表格對(duì)應(yīng)起來(lái),隨便操作交洗。

安裝

建議在虛擬環(huán)境中骑科,且為django項(xiàng)目獨(dú)立創(chuàng)建:

$ pip install django

創(chuàng)建Django項(xiàng)目

$ django-admin startproject ./MyDjangoProject

創(chuàng)建好Django項(xiàng)目后,文件夾中會(huì)出現(xiàn)如下目錄結(jié)構(gòu):

  • ./MyDjangoProject
    • manage.py:整個(gè)項(xiàng)目的管理文件
    • MyDjangoProject:整個(gè)項(xiàng)目文件
      • __init__.py
      • setting.py:項(xiàng)目配置文件
      • urls.py:網(wǎng)址的路由設(shè)置构拳,不同路徑分配不同的處理函數(shù)
      • wsgi.py:作為Web Server咆爽,并負(fù)責(zé)和Django框架進(jìn)行交互

注意:Django中梁棠,一個(gè)項(xiàng)目只是一個(gè)Admin管理員,不包括任何的具體實(shí)現(xiàn)伍掀。真正的業(yè)務(wù)代碼實(shí)現(xiàn)掰茶,也就是具體的MVC實(shí)現(xiàn),是要在單獨(dú)的各個(gè)模塊中的蜜笤。

Django的模塊分割

Django中的一個(gè)項(xiàng)目只是代表一個(gè)大框架濒蒋,不同于Flask創(chuàng)建一個(gè)項(xiàng)目即一個(gè)完整的app。

Django中的一個(gè)app只是大框架下的一個(gè)子模塊把兔。Django中的每個(gè)app都具備完全的MVC結(jié)構(gòu)代碼沪伙。

image
image

實(shí)際工作中,在我們?cè)O(shè)計(jì)好業(yè)務(wù)模塊后县好,就可以在Django中把模塊分開(kāi): 一個(gè)模塊生成一個(gè)子目錄围橡,即一個(gè)app應(yīng)用。 每個(gè)app子文件夾都有同樣的一套文件缕贡,實(shí)現(xiàn)了典型MVC代碼分割翁授。

在一個(gè)Django項(xiàng)目中,創(chuàng)建一個(gè)子app應(yīng)用的命令為:

$ python ./manage.py startapp MyApp01

創(chuàng)建好子app的MyApp01后晾咪,Django的目錄中就出現(xiàn)了一個(gè)子目錄MyApp01收擦,結(jié)構(gòu)如下:

  • ./MyApp01
    • admin.py:網(wǎng)址后臺(tái)Dashboard相關(guān)
    • __init__.py
    • migrations/
      • __init__.py
    • models.py:MVC中的M,負(fù)責(zé)和數(shù)據(jù)庫(kù)交互
    • tests.py:測(cè)試代碼
    • views.py:MVC中的V谍倦,負(fù)責(zé)頁(yè)面的模版

建立好各個(gè)模塊后塞赂,我們需要在項(xiàng)目主配置settings.py中把每個(gè)模塊進(jìn)行注冊(cè),才能集合為一個(gè)項(xiàng)目昼蛀。

settings.py中注冊(cè)的方法如下:

image
image

啟動(dòng)服務(wù)器:

$ python ./manage.py runserver IP:端口

然后就會(huì)啟動(dòng)一個(gè)指定IP的服務(wù)器:

image
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宴猾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叼旋,更是在濱河造成了極大的恐慌仇哆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夫植,死亡現(xiàn)場(chǎng)離奇詭異税产,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)偷崩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門辟拷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人阐斜,你說(shuō)我怎么就攤上這事衫冻。” “怎么了谒出?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵隅俘,是天一觀的道長(zhǎng)邻奠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)为居,這世上最難降的妖魔是什么碌宴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蒙畴,結(jié)果婚禮上贰镣,老公的妹妹穿的比我還像新娘。我一直安慰自己膳凝,他們只是感情好碑隆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蹬音,像睡著了一般上煤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上著淆,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天劫狠,我揣著相機(jī)與錄音,去河邊找鬼永部。 笑死独泞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扬舒。 我是一名探鬼主播阐肤,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凫佛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讲坎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起愧薛,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晨炕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后毫炉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓮栗,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年瞄勾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了费奸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡进陡,死狀恐怖愿阐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趾疚,我是刑警寧澤缨历,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布以蕴,位于F島的核電站,受9級(jí)特大地震影響辛孵,放射性物質(zhì)發(fā)生泄漏丛肮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一魄缚、第九天 我趴在偏房一處隱蔽的房頂上張望宝与。 院中可真熱鬧,春花似錦鲜滩、人聲如沸伴鳖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榜聂。三九已至,卻和暖如春嗓蘑,著一層夾襖步出監(jiān)牢的瞬間须肆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工桩皿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豌汇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓泄隔,卻偏偏與公主長(zhǎng)得像拒贱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佛嬉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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