Django學(xué)習(xí)

昨天看了一個(gè)關(guān)于如何使用Django編寫一個(gè)blog的視頻,發(fā)現(xiàn)聽了一個(gè)小時(shí)仍然稀里糊涂量瓜,一步步照著做完全不懂為什么,雖然最終還沒運(yùn)行成功途乃。榔至。。還是先理解一下Django框架及其設(shè)計(jì)模式吧欺劳。

1唧取、Django是什么

Django是python的web開發(fā)框架,遵循MVC的設(shè)計(jì)模式划提,但在Django中通常稱為MTV(model-template-views)枫弟。框架能夠幫助你把程序的整體架構(gòu)搭建好, 而我們所需要做的工作就是填寫邏輯, 而框架能夠在合適的時(shí)候調(diào)用你寫的邏輯, 而不需要我們自己去調(diào)用邏輯, 讓W(xué)eb開發(fā)變的更敏捷鹏往。

1.1淡诗、MVC模式

模型(model):模型持有所有的數(shù)據(jù)骇塘、狀態(tài)和程序邏輯。模型獨(dú)立于視圖和控制器

視圖(view):用來呈現(xiàn)模型韩容。視圖通常直接從模型中取得它需要顯示的狀態(tài)與數(shù)據(jù)款违。對于相同的信息可以有多個(gè)不同的顯示形式或視圖

控制器(controller):位于視圖和模型中間,負(fù)責(zé)接受用戶的輸入群凶,將輸入進(jìn)行解析并反饋給模型插爹,通常一個(gè)視圖具有一個(gè)控制器

他們之間以一種插件式的、松耦合的方式連接在一起请梢,模型負(fù)責(zé)業(yè)務(wù)對象與數(shù)據(jù)庫的映射(ORM)赠尾,視圖負(fù)責(zé)與用戶的交互(頁面),控制器接受用戶的輸入調(diào)用模型和視圖完成用戶的請求毅弧,其示意圖如下所示:

1.2气嫁、MTV模式

Django的MTV模式本質(zhì)上和MVC是一樣的,也是為了各組件間保持松耦合關(guān)系够坐,只是定義上有些許不同寸宵,Django的MTV分別是值:

M 代表模型(Model):負(fù)責(zé)業(yè)務(wù)對象和數(shù)據(jù)庫的關(guān)系映射(ORM)。

T 代表模板 (Template):負(fù)責(zé)如何把頁面展示給用戶(html)元咙。

V 代表視圖(View):負(fù)責(zé)業(yè)務(wù)邏輯邓馒,并在適當(dāng)時(shí)候調(diào)用Model和Template。

除了以上三層之外蛾坯,還需要一個(gè)URL分發(fā)器光酣,它的作用是將一個(gè)個(gè)URL的頁面請求分發(fā)給不同的View處理,View再調(diào)用相應(yīng)的Model和Template脉课,MTV的響應(yīng)模式如下所示:


1救军,Web服務(wù)器(中間件)收到一個(gè)http請求

2,Django在URLconf里查找對應(yīng)的視圖(View)函數(shù)來處理http請求

3倘零,視圖函數(shù)調(diào)用相應(yīng)的數(shù)據(jù)模型來存取數(shù)據(jù)唱遭、調(diào)用相應(yīng)的模板向用戶展示頁面

4,視圖函數(shù)處理結(jié)束后返回一個(gè)http的響應(yīng)給Web服務(wù)器

5呈驶,Web服務(wù)器將響應(yīng)發(fā)送給客戶端

1.2.1拷泽、ORM對象關(guān)系映射

ORM(Object Relational Mapping)是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中袖瞻。

在業(yè)務(wù)邏輯層和用戶界面層中司致,我們是面向?qū)ο蟮摹.?dāng)對象信息發(fā)生變化的時(shí)候聋迎,我們需要把對象的信息保存在關(guān)系數(shù)據(jù)庫中脂矫。ORM解決的主要問題是對象關(guān)系的映射。域模型和關(guān)系模型分別是建立在概念模型的基礎(chǔ)上的霉晕。域模型是面向?qū)ο蟮耐ピ伲P(guān)系模型是面向關(guān)系的捞奕。一般情況下,一個(gè)持久化類和一個(gè)表對應(yīng)拄轻,類的每個(gè)實(shí)例對應(yīng)表中的一條記錄颅围,類的每個(gè)屬性對應(yīng)表的每個(gè)字段

1.2.2恨搓、MTV模式對應(yīng)到Django中的文件



2院促、Django怎么用

2.1、創(chuàng)建項(xiàng)目

?pythoon django-admin startproject guest ? ? ?#創(chuàng)建guest項(xiàng)目

創(chuàng)建完成后奶卓,自動(dòng)生成以下幾個(gè)文件

a一疯、guest/__init__.py:

一個(gè)空的文件撼玄,用它來標(biāo)識一個(gè)目錄為Python的標(biāo)準(zhǔn)包(如果__init__.py不存在夺姑,這個(gè)目錄就僅僅是一個(gè)目錄,而不是一個(gè)包掌猛,它就不能被導(dǎo)入或者包含其它的模塊和嵌套包盏浙。可以為空)

b荔茬、guest/settings.py:

Django項(xiàng)目的配置文件废膘,包括Django模塊應(yīng)用配置,數(shù)據(jù)庫配置慕蔚,模板配置等

c丐黄、guest/urls.py:

Django項(xiàng)目的URL聲明,在URL請求和處理該請求的視圖函數(shù)之間建立一個(gè)對應(yīng)關(guān)系(一份由 Django 驅(qū)動(dòng)的網(wǎng)站"目錄"孔飒。決定127.0.0.1:8000后面可以接哪些內(nèi)容)

urls.py的工作原理:瀏覽器發(fā)送請求URL灌闺,服務(wù)器根據(jù)請求的URL,在項(xiàng)目所在的所有應(yīng)用的urls.py配置文件中進(jìn)行查找坏瞄,如果能匹配到該URL桂对,就會將該URL交給其對應(yīng)的視圖函數(shù)進(jìn)行處理。負(fù)責(zé)處理該URL的視圖函數(shù)鸠匀,會搜集一些業(yè)務(wù)數(shù)據(jù)蕉斜,然后把這些數(shù)據(jù),通過return render(request,'模板文件‘’)

d缀棍、guest/wsgi.py:

服務(wù)器網(wǎng)關(guān)接口宅此,為WSGI兼容的Web服務(wù)器服務(wù)項(xiàng)目的切入點(diǎn)

e、manage.py:

一個(gè)命令行工具爬范,可以讓你在使用Django項(xiàng)目時(shí)以不同的方式進(jìn)行交互

2.2诽凌、創(chuàng)建應(yīng)用

進(jìn)入manage.py所在的目錄,運(yùn)行 ?python manage.py startapp sign ? #創(chuàng)建sign應(yīng)用

創(chuàng)建完成后生成以下文件:

a坦敌、migrations/:

用于記錄models中數(shù)據(jù)的變更

b侣诵、__init__.py

c痢法、admin.py:

映射models中的數(shù)據(jù)到Django自帶的admin后臺,因此無須自行編寫后臺管理模塊

d杜顺、apps.py:

用于應(yīng)用程序的配置

e财搁、models.py:

創(chuàng)建應(yīng)用程序數(shù)據(jù)表模型(對應(yīng)數(shù)據(jù)庫的相關(guān)操作)

f、tests.py:

創(chuàng)建Django測試

g躬络、views.py

控制向前端顯示哪些數(shù)據(jù)

2.2.1尖奔、project與app的區(qū)別

一個(gè)project包含很多個(gè)Django app以及對它們的配置

技術(shù)上,project的作用是提供配置文件穷当,比方說哪里定義數(shù)據(jù)庫連接信息, 安裝的app列表提茁,TEMPLATE_DIRS,等等

一個(gè)app是一套Django功能的集合馁菜,通常包括模型和視圖茴扁,按Python的包結(jié)構(gòu)的方式存在(app的一個(gè)關(guān)鍵點(diǎn)是它們是很容易移植到其他project和被多個(gè)project復(fù)用)

即:project的配置構(gòu)成了一個(gè)全局的運(yùn)行平臺,各個(gè)APP都運(yùn)行在這個(gè)全局的運(yùn)行平臺上汪疮,而APP代表的是一個(gè)相對獨(dú)立的功能模塊峭火,所以程序的邏輯都在APP中

2.3、運(yùn)行項(xiàng)目

Django已經(jīng)提供了web容器智嚷,通過“runserver”命令即可運(yùn)行

python manage.py runserver (默認(rèn)為本機(jī)的8000端口啟動(dòng))

或指定IP地址與端口號啟動(dòng) ?python manage.py runserver 127.0.0.1: 8001

打開瀏覽器卖丸,若能成功訪問 http://127.0.0.1,則說明成功運(yùn)行

2.4盏道、頁面中打印hello Django

a稍浆、配置guest/settings.py文件,將sign應(yīng)用添加到項(xiàng)目中

b猜嘱、在guest/urls.py文件中衅枫,導(dǎo)入sign應(yīng)用的views,并添加index/路徑配置

c泉坐、在sign/views.py文件中为鳄,添加index函數(shù)

d、創(chuàng)建templates文件腕让,并在其中創(chuàng)建一個(gè)index.html的網(wǎng)頁(很奇怪的是孤钦,在這里我將templates文件創(chuàng)建在sign文件下,但是網(wǎng)頁實(shí)際訪問的是Django安裝目錄下已存在的templates文件下的文件纯丸,所以最開始頁面報(bào)錯(cuò)偏形,提示源文件不存在)

e、運(yùn)行項(xiàng)目 并打開瀏覽器訪問http://127.0.0.1:8000/index觉鼻,即可訪問index.html頁面

Django工作流如下





參考:

www.zhihu.com/question/26235428

blog.csdn.net/acs713/article/details/40651457

www.cnblogs.com/wgbs25673578/p/5140482.html

muilpin.blog.163.com/blog/static/16538293620121212481865/

《Python web接口開發(fā)與測試》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俊扭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坠陈,更是在濱河造成了極大的恐慌萨惑,老刑警劉巖捐康,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庸蔼,居然都是意外死亡解总,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門姐仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來花枫,“玉大人,你說我怎么就攤上這事掏膏±秃玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵馒疹,是天一觀的道長佳簸。 經(jīng)常有香客問我,道長行冰,這世上最難降的妖魔是什么溺蕉? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任伶丐,我火速辦了婚禮悼做,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哗魂。我一直安慰自己肛走,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布录别。 她就那樣靜靜地躺著朽色,像睡著了一般。 火紅的嫁衣襯著肌膚如雪组题。 梳的紋絲不亂的頭發(fā)上葫男,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音崔列,去河邊找鬼梢褐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赵讯,可吹牛的內(nèi)容都是我干的盈咳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼边翼,長吁一口氣:“原來是場噩夢啊……” “哼鱼响!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起组底,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丈积,失蹤者是張志新(化名)和其女友劉穎筐骇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體江滨,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拥褂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牙寞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饺鹃。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖间雀,靈堂內(nèi)的尸體忽然破棺而出悔详,到底是詐尸還是另有隱情,我是刑警寧澤惹挟,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布茄螃,位于F島的核電站,受9級特大地震影響连锯,放射性物質(zhì)發(fā)生泄漏归苍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一运怖、第九天 我趴在偏房一處隱蔽的房頂上張望拼弃。 院中可真熱鬧,春花似錦摇展、人聲如沸吻氧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盯孙。三九已至,卻和暖如春祟滴,著一層夾襖步出監(jiān)牢的瞬間振惰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工垄懂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骑晶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓埠偿,卻偏偏與公主長得像透罢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子冠蒋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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