我們想沒想過,作為數據分析的小白,我們有朝一日可以獨立創建自己的數據可視化系統?跟jacky一起,來一次數據的逆襲!
下面這些系統,用Python的Django框架,都可以模擬完成:
下面就開始我的分享:
使用django的MTV模型搭建網站
基礎鋪墊—MTV模型
st=>start: Request
e=>end: Response
op=>operation: 服務器(Djangoweb)
st->op->e
首先,要搞清楚我們去訪問服務器,服務器返回信息的行為。
1)Request向服務器(Djangoweb)發起請求
- 點擊頁面,或查看網頁信息,都是這個過程
2)服務器回應-Response
- 服務器拋出的可能是某個頁面,也可能是圖片,或是一組動態的數據
上面Request發出請求命令給服務器,服務器接受指令回應這個行為,這個一個比較粗略的描述。那么,如果一個網站的后端是用Djangoweb搭建的,那么它們之間是如何運作的。那么,我們就要來剖析Djangoweb服務器內部更細致的結構是怎樣的。
Djangoweb內部結構
Views層
作用
調配我們要加載網頁的數據
把我們要加載的對應的網站找出來
Models層
是一個托管數據的層級,Models是用python的語言,python的方面去進行數據庫中的增、刪、改、查、存儲等操作
作用
Views首先會在Models中查找我們要的數據;
接下來,Views會把從Models層中找到的數據,裝載在Templates層中
Templates層
Templates層就是模版層,就是我們看到網頁的樣貌。
MTV模型
- M-數據庫
- T-模版
- V-控制層
更細致的過程
服務器接受一個請求,這個請求對應一個URL,找到特定的views(因為有不同的頁面,所有會有不同的views),這個特定的views會從models調取特定的數據,這個數據會裝載在templates,然后呈現給我們瀏覽網頁時,有數據的網頁。
有些網頁的數據是不斷變化的,這個就相當于不同的templates加載不同的數據。
具體實操
(一) Django項目的新建
第1步:打開IDE,新建New Project
第2步:在新建項目下,創建django
第3步:對新建的django進行一些調配和設置
考慮到我們可能要新建多個網站,考慮到每個網站的修改變動不互相影響,我們采用創建虛擬環境的方法,當然,有些初學者系統創建虛擬環境會失敗,這里作為學習,不創建虛擬環境,對后面的學習也是沒有影響的。
起一個項目的名稱并創建
這樣Django的網站就創建成功了
第4步:使用manage.py文件去創建我們可視化的網站
為什么用manage.py去創建呢?我們通過文件代碼可以看出,manage幫我們搞定了很多的環境變量,對于包的導入和查找來說,Django都是一個很復雜的環境,所以用manage文件創建可以保證文件都在Django目錄下。
如果目錄中有Django的文件(如下圖所示),那么就說明我們創建成功了
- 這里需要提醒的是,有的朋友對manage執行startapp命令時可能會出線如下錯誤提示:
- 解決方案,大家可以參照stack,在自己的電腦的終端輸入相應代碼就可以解決。
第5步:使用settings文件中添加網站
- settings文件中包含django站點的路徑和安全設施
現在回顧一下開頭的MTV模型,首先我們向服務器發起請求(Request到url),接下來url找到了對應的調配層views,最后views從templates和models中找想要的數據和網頁,這就是django創建網頁的整體邏輯。但是,我們具體操作django時,這個過程實際上是反過來的:我們先對templates網頁進行設計,接著反過來添加調配它的視圖函數views,最后在urls文件下給它分配一個鏈接。我們先分享創建一個靜態的網頁,這是models層是用不上的(models后面再跟大家分享)。
第6步:在templates層中添加可視化的模版
- 點擊右鍵創建htm文件,將html文件命名為index,這就是我們要創建訪問網頁的首頁。
第7步:在views層中調用templates的視圖函數
- 上面,我們只是創造了一個函數index,一個網頁是否能出現在網站上,網址是衡量它唯一的途徑, 接下來,我們就要在urls中給我們的網站分配一個網址
第8步:在urls中分配網址
第9步:運行 Django項目,創建網站
這樣,我們輸入網址:http://127.0.0.1:8000/index ,我們的數據可視化網站就初步搭建完成了,我們看看效果:
這里要特別注意的是:由于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步,我們就初步的搭建了一個數據可視化的網站,請繼續關注本系列的第二次分享... ...