我們想沒想過抽碌,作為數(shù)據(jù)分析的小白悍赢,我們有朝一日可以獨立創(chuàng)建自己的數(shù)據(jù)可視化系統(tǒng)决瞳?跟jacky一起,來一次數(shù)據(jù)的逆襲左权!
下面這些系統(tǒng)皮胡,用Python的Django框架,都可以模擬完成:
下面就開始我的分享:
使用django的MTV模型搭建網(wǎng)站
基礎(chǔ)鋪墊—MTV模型
st=>start: Request
e=>end: Response
op=>operation: 服務(wù)器(Djangoweb)
st->op->e
首先赏迟,要搞清楚我們?nèi)ピL問服務(wù)器屡贺,服務(wù)器返回信息的行為。
1)Request向服務(wù)器(Djangoweb)發(fā)起請求
- 點擊頁面锌杀,或查看網(wǎng)頁信息甩栈,都是這個過程
2)服務(wù)器回應(yīng)-Response
- 服務(wù)器拋出的可能是某個頁面,也可能是圖片糕再,或是一組動態(tài)的數(shù)據(jù)
上面Request發(fā)出請求命令給服務(wù)器量没,服務(wù)器接受指令回應(yīng)這個行為,這個一個比較粗略的描述突想。那么殴蹄,如果一個網(wǎng)站的后端是用Djangoweb搭建的,那么它們之間是如何運作的猾担。那么袭灯,我們就要來剖析Djangoweb服務(wù)器內(nèi)部更細致的結(jié)構(gòu)是怎樣的。
Djangoweb內(nèi)部結(jié)構(gòu)
Views層
作用
調(diào)配我們要加載網(wǎng)頁的數(shù)據(jù)
把我們要加載的對應(yīng)的網(wǎng)站找出來
Models層
是一個托管數(shù)據(jù)的層級绑嘹,Models是用python的語言稽荧,python的方面去進行數(shù)據(jù)庫中的增、刪圾叼、改蛤克、查、存儲等操作
作用
Views首先會在Models中查找我們要的數(shù)據(jù)夷蚊;
接下來,Views會把從Models層中找到的數(shù)據(jù)髓介,裝載在Templates層中
Templates層
Templates層就是模版層惕鼓,就是我們看到網(wǎng)頁的樣貌。
MTV模型
- M-數(shù)據(jù)庫
- T-模版
- V-控制層
更細致的過程
服務(wù)器接受一個請求唐础,這個請求對應(yīng)一個URL,找到特定的views(因為有不同的頁面箱歧,所有會有不同的views),這個特定的views會從models調(diào)取特定的數(shù)據(jù)一膨,這個數(shù)據(jù)會裝載在templates呀邢,然后呈現(xiàn)給我們?yōu)g覽網(wǎng)頁時,有數(shù)據(jù)的網(wǎng)頁豹绪。
有些網(wǎng)頁的數(shù)據(jù)是不斷變化的价淌,這個就相當于不同的templates加載不同的數(shù)據(jù)。
具體實操
(一) Django項目的新建
第1步:打開IDE,新建New Project
第2步:在新建項目下蝉衣,創(chuàng)建django
第3步:對新建的django進行一些調(diào)配和設(shè)置
考慮到我們可能要新建多個網(wǎng)站括尸,考慮到每個網(wǎng)站的修改變動不互相影響,我們采用創(chuàng)建虛擬環(huán)境的方法病毡,當然濒翻,有些初學(xué)者系統(tǒng)創(chuàng)建虛擬環(huán)境會失敗,這里作為學(xué)習(xí)啦膜,不創(chuàng)建虛擬環(huán)境有送,對后面的學(xué)習(xí)也是沒有影響的。
起一個項目的名稱并創(chuàng)建
這樣Django的網(wǎng)站就創(chuàng)建成功了
第4步:使用manage.py文件去創(chuàng)建我們可視化的網(wǎng)站
為什么用manage.py去創(chuàng)建呢僧家?我們通過文件代碼可以看出雀摘,manage幫我們搞定了很多的環(huán)境變量,對于包的導(dǎo)入和查找來說啸臀,Django都是一個很復(fù)雜的環(huán)境届宠,所以用manage文件創(chuàng)建可以保證文件都在Django目錄下。
如果目錄中有Django的文件(如下圖所示)乘粒,那么就說明我們創(chuàng)建成功了
- 這里需要提醒的是豌注,有的朋友對manage執(zhí)行startapp命令時可能會出線如下錯誤提示:
- 解決方案,大家可以參照stack灯萍,在自己的電腦的終端輸入相應(yīng)代碼就可以解決轧铁。
第5步:使用settings文件中添加網(wǎng)站
- settings文件中包含django站點的路徑和安全設(shè)施
現(xiàn)在回顧一下開頭的MTV模型,首先我們向服務(wù)器發(fā)起請求(Request到url)旦棉,接下來url找到了對應(yīng)的調(diào)配層views齿风,最后views從templates和models中找想要的數(shù)據(jù)和網(wǎng)頁,這就是django創(chuàng)建網(wǎng)頁的整體邏輯绑洛。但是救斑,我們具體操作django時,這個過程實際上是反過來的:我們先對templates網(wǎng)頁進行設(shè)計真屯,接著反過來添加調(diào)配它的視圖函數(shù)views脸候,最后在urls文件下給它分配一個鏈接。我們先分享創(chuàng)建一個靜態(tài)的網(wǎng)頁绑蔫,這是models層是用不上的(models后面再跟大家分享)运沦。
第6步:在templates層中添加可視化的模版
- 點擊右鍵創(chuàng)建htm文件,將html文件命名為index配深,這就是我們要創(chuàng)建訪問網(wǎng)頁的首頁携添。
第7步:在views層中調(diào)用templates的視圖函數(shù)
- 上面,我們只是創(chuàng)造了一個函數(shù)index篓叶,一個網(wǎng)頁是否能出現(xiàn)在網(wǎng)站上烈掠,網(wǎng)址是衡量它唯一的途徑羞秤, 接下來,我們就要在urls中給我們的網(wǎng)站分配一個網(wǎng)址
第8步:在urls中分配網(wǎng)址
第9步:運行 Django項目向叉,創(chuàng)建網(wǎng)站
這樣锥腻,我們輸入網(wǎng)址:http://127.0.0.1:8000/index ,我們的數(shù)據(jù)可視化網(wǎng)站就初步搭建完成了母谎,我們看看效果:
這里要特別注意的是:由于django版本不同瘦黑,有些朋友在運行django的時候,會報錯:
WARNINGS: ?: (1_8.W001) The standalone TEMPLATE_* settings were
deprecated in Django 1.8 and the TEMPLATES dictionary takes
precedence. You must put the values of the following settings into
your default TEMPLATES dict: TEMPLATE_DIRS.
解決方案為:
以上9步奇唤,我們就初步的搭建了一個數(shù)據(jù)可視化的網(wǎng)站幸斥,請繼續(xù)關(guān)注本系列的第二次分享... ...