1.項目建立
可以用指令行建立,也可以用IDE幫你建立。這裡推薦這樣的生态環境組合。anaconda給你提供和管理項目所需要的虛拟環境(也便于将來生成最小化的requirements進行環境部署docker依賴環境安裝),使用pycharm編輯器進行代碼編寫,django可以幫你快速建立項目運作項目等,但是還是建議你敲指令來熟悉django。
利用anaconda切換到你開發項目所準備python虛拟環境,可以看到在名為python34的環境下我這邊隻裝了一個Django包(其他都是預設裝的)。
指令行建立django項目: django-admin startproject website website是你的項目名稱
用pycharm打開目錄,簡單介紹下項目目錄下的内容。
website是你整個項目的配置目錄,包括urls路由分發,settings設定(資料庫,靜态檔案,緩存等一系列配置),跟它同級的manage.py 顧名思義就是管理運作項目的腳本檔案。
項目建立完成了,當然是要驗證一下能否正常啟動了,django的項目啟動指令:
python manage.py runserver ip和端口,不寫預設是127.0.0.1:8000
2. 應用建立
項目建立好以後,當然是要開發你的應用了,一個大型的項目肯定是要有多個應用的,先在指令行建立你的第一個應用(blog應用)。
python manage.py startapp blog
應用建立以後記得在項目根目錄的settings下進行如下的配置(就是進行你的應用注冊,在執行python manage.py runserver時候,django的django.apps子產品讀取項目檔案中的settings.py拿到這幾個app,然後交給django.apps的registry.py和config.py來進行統一配置加載):
django會自動為你的blog應用建立以下的檔案,models是你将來編寫對象資料模型的地方,views是視圖函數,主要負責将來你業務層代碼的編輯。将來還要建立templates也就是模闆層,這樣django完整的MVT開發模式就呈現在你眼前了。
大白話來講MVT就是M管模型設計也就是你項目的資料對象啦;V管業務邏輯,業務邏輯的主體當然就是資料喽,邏輯有了資料也有了,剩下的T對應的就是給使用者展示和互動的html頁面了。
以上是開發模式角度來講MVT,那使用者在與我們的“産品”互動時到底發生了什麼?其實簡單的工作流是這樣的:
1.使用者觸發事件,比如你某電商網站買了一家店的一個商品(其實就是你平時點了個連結,圖檔什麼的)
2.對應的URL與項目URL比對了
3.django項目根據分發的url确定對應哪個views中的視圖函數,該視圖函數(業務邏輯)進行處理,會生成一個使用者訂單,相應的也生成了該使用者的一條訂單資料記錄(對應Models層使用者訂單對象的資料記錄多了一條),最後将該資料渲染給templates層對應的html模闆展示給使用者,這就大緻的一個工作流程。
(實際中業務邏輯和内容比描述的多很多)
希望新手們根據以上3點的總體思路來了解地去學習,而不是去死記。
3. 建立模闆
應用建立好後,為了展示web頁面,需要建立模闆檔案。建立模闆檔案之前需要進行一些前期配置;
settings中修改成漢語中國時區
建立templates檔案夾,settings中修改模闆路徑
(有人私信問,為什麼他建立的模闆總是報錯找不到…,可能這個學習教程真的太新手了,但是還是希望大家并不是隻是去根據這篇文去搭建自己部落格,現在肯定做不到去探究源碼畢竟完整部落格可能都沒有搭建過,但是至少應該知道每一步做的目的是什麼?)
上面說的templates檔案夾如果以上面配置的話,你需要在項目根目錄下建立。
可以自己在settings中列印一下BASE_DIR是什麼,os的函數是什麼,這都是要用到的。
在templates下建立我們需要展示的html檔案。
現在為止MVT該有的檔案都有了,我們需要根據上面提到的三點工作流程來完成我們的“流水線”
4.流水線生産
要比對url,首先需要在項目級别的urls.py檔案中進行路由配置。
website/website/settings.py
接着在應用級别配置urls,根據urls定位是哪個視圖函數的業務内容:
website/blog/urls:
業務函數處理業務邏輯将最終結果組織起來渲染給模闆:
website/blog/views:
最後在模闆的index.html檔案中接收視圖函數處理後的結果:
結果展示:
基本就是以上的工作思路:
url編寫配置==》定位視圖函數==》視圖函數編寫業務邏輯==》前端頁面模闆接收參數。
git連接配接:https://github.com/syjzlee/Django-website-days
以日掌握量為機關更新
下期暫定:
1.模型設計
2.使用mysql資料庫
3.建立超級管理者
4.父類模闆