Django的來(lái)歷:python開(kāi)發(fā)的!
long long long years ago!勞倫斯出版集團(tuán)新聞
網(wǎng)絡(luò)渲染發(fā)布自己的新聞——> 需要有自己的網(wǎng)站-> 處理效率較高的網(wǎng)站
鑒于當(dāng)時(shí)該公司程序員,python開(kāi)發(fā)的棋恼!
降低開(kāi)發(fā)成本[優(yōu)先選擇自己公司已有程序員的開(kāi)發(fā)能力!]
python-> web開(kāi)發(fā)-> 代碼的復(fù)雜度較高屎即,技術(shù)難度較低拂檩!
封裝python開(kāi)發(fā)web網(wǎng)站的大部分的應(yīng)用模塊-> Django
網(wǎng)站的開(kāi)發(fā)過(guò)程中浅侨,使用漠秋、升級(jí)烹看、完善百宇、封裝->迭代升級(jí)-> 完善的一個(gè)操作模塊
2005年開(kāi)源發(fā)布[開(kāi)發(fā)源代碼]豁延,共享昙篙!讓所有的技術(shù)愛(ài)好者,可以共同開(kāi)發(fā)維護(hù)诱咏!
開(kāi)源~滿足開(kāi)源協(xié)議
2007年社區(qū)發(fā)布了第一個(gè)正式版本1.0苔可,發(fā)布之后,由于Django開(kāi)發(fā)web網(wǎng)站的極度的高效性袋狞,很快流行起來(lái)焚辅!
2010年,Python稱為TOIBE年度語(yǔ)言苟鸯,但是沒(méi)有流行的契機(jī)同蜻!
2016年,python跟隨著Goole的AlphaGO和對(duì)應(yīng)的人工智能早处,再度崛起湾蔓!
2017年,python稱為人工智能的首選語(yǔ)言砌梆!
python第一次被國(guó)家機(jī)構(gòu)認(rèn)可默责,成為了教科書語(yǔ)言!
1-1 Django的優(yōu)勢(shì)
Django是python語(yǔ)言編寫的咸包,專門用于快速桃序、高效的開(kāi)發(fā)web應(yīng)用程序的一個(gè)框架!
|
框架:模塊的集合烂瘫,除了具備模塊所有的功能之外媒熊,同時(shí)會(huì)提供一些簡(jiǎn)單的功能處理流程,方便開(kāi)發(fā)人員對(duì)于指定流程的自動(dòng)化處理!同時(shí)框架會(huì)根據(jù)不同的功能流程有自己的一些特定的軟件結(jié)構(gòu)模式泛释,所以框架在某種程度上也是一種獨(dú)立的軟件滤愕!
模塊:類似于pymysql/pygame,模塊是python中代碼塊的集合怜校,一般會(huì)包含多個(gè)變量间影、函數(shù)、類型等
|
Django由于其非常有特點(diǎn)的特性茄茁,很快流行于web開(kāi)發(fā)領(lǐng)域
l 先進(jìn)的MVT處理模式
l 自動(dòng)化的項(xiàng)目構(gòu)建管理方式
l 完善的數(shù)據(jù)模型處理
l 強(qiáng)大的后臺(tái)管理系統(tǒng)
l 優(yōu)秀的ORM操作模塊
l 優(yōu)雅的模板操作封裝
l 優(yōu)異的緩存支持
l 完美的表單操作封裝
l 內(nèi)建Sqlite數(shù)據(jù)庫(kù)魂贬,和其他各種類型數(shù)據(jù)庫(kù)的支持
l more……
1-2 Django框架中MVT處理模式
關(guān)于web軟件的架構(gòu)模式
傳統(tǒng)的web軟件處理模式:MVC處理模式
Django進(jìn)行了封裝和升級(jí)的處理模式:MVT處理模式
關(guān)于軟件和業(yè)務(wù)功能的架構(gòu)模式
B/S C/S 軟件架構(gòu)模型
B2B C2C B2C 業(yè)務(wù)架構(gòu)模型
1-3 Django快速入門
l 安裝Django
Django是一個(gè)框架,是一個(gè)用來(lái)快速開(kāi)發(fā)web應(yīng)用程序的框架
Django框架的安裝方式
所有版本:Django1.0->Django2.0.x
最新的版本:Django2.0.x版本:主要用來(lái)進(jìn)行學(xué)習(xí)和測(cè)試
流行的版本:Django1.8~1.11版本裙顽,也是公司常用的版本
Django的安裝
pip install django -> 默認(rèn)安裝了最新的穩(wěn)定版本 2.0
pip install django==1.11 ->指定版本安裝
安裝過(guò)程中出現(xiàn)了關(guān)鍵字Permission的錯(cuò)誤付燥,表示權(quán)限不夠,通過(guò)管理員權(quán)限運(yùn)行命令行再次執(zhí)行命令愈犹,就可以安裝成功键科!
l 項(xiàng)目搭建
a. 創(chuàng)建項(xiàng)目
使用Django創(chuàng)建一個(gè)web項(xiàng)目:項(xiàng)目自動(dòng)化創(chuàng)建構(gòu)造
django-admin startproject 項(xiàng)目名稱
|-- myproject/ 項(xiàng)目的主目錄,存放項(xiàng)目中所有文件的文件夾
|-- myproject/ 項(xiàng)目的主項(xiàng)目/根項(xiàng)目漩怎,用來(lái)管理所有的項(xiàng)目
|-- init.py 包定義文件勋颖,定義了存放這個(gè)文件的文件夾是一個(gè)python包
|-- settings.py 項(xiàng)目中所有的配置信息存放的模塊,配置模塊
|-- urls.py 路由模塊勋锤,定義url地址和訪問(wèn)的處理函數(shù)之間的映射關(guān)系
|-- wsgi.py 實(shí)現(xiàn)了wsgi網(wǎng)關(guān)協(xié)議的模塊饭玲,表示Django項(xiàng)目支持wsgi網(wǎng)關(guān)協(xié)議
|-- manager.py 項(xiàng)目的命令行支持模塊,可以在命令行執(zhí)行不同的命令實(shí)現(xiàn)不同的功能
b. 運(yùn)行測(cè)試
啟動(dòng)項(xiàng)目叁执,在瀏覽器中訪問(wèn)項(xiàng)目是否創(chuàng)建成功
在命令行中茄厘,進(jìn)入項(xiàng)目主目錄,執(zhí)行下面的命令
python manage.py runserver
執(zhí)行完上述命令之后谈宛,在瀏覽器中訪問(wèn):http://localhost:8000查看訪問(wèn)到的頁(yè)面
c. 創(chuàng)建第一個(gè)根項(xiàng)目的視圖
首先在根項(xiàng)目下次哈,創(chuàng)建一個(gè)模塊:views.py
在view.py中,創(chuàng)建一個(gè)函數(shù)入挣,返回一個(gè)數(shù)據(jù)[函數(shù):視圖處理函數(shù)]
d. 配置路由應(yīng)用
打開(kāi)myproject/urls.py路由模塊
添加一個(gè)新的路由映射地址
e. 運(yùn)行程序
l 創(chuàng)建第一個(gè)模塊應(yīng)用
a. 創(chuàng)建一個(gè)模塊應(yīng)用
在項(xiàng)目主目錄中執(zhí)行命令[app : application]
django-admin startapp 模塊名稱[二級(jí)網(wǎng)站]
|-- myblog/ 模塊的根目錄亿乳;二級(jí)網(wǎng)站的根目錄
|-- migrations/ 數(shù)據(jù)庫(kù)文件存放的文件夾[數(shù)據(jù)庫(kù)部分細(xì)講]
|-- init.py 包定義文件
|-- admin.py 后臺(tái)管理文件[后臺(tái)管理系統(tǒng)細(xì)講]
|-- apps.py 模塊名稱定義文件
|-- models.py 數(shù)據(jù)模型定義文件
|-- test.py 測(cè)試文件——一般用不上
|-- views.py 視圖模塊,定義視圖處理函數(shù)
b. 將模塊應(yīng)用径筏,添加到根項(xiàng)目中
修改myproject/settings.py配置文件
INSTALLED_APP選項(xiàng)列表中葛假,添加myblog
c. 編寫模塊的視圖處理函數(shù)
修改views.py文件,添加一個(gè)博客首頁(yè)的視圖處理函數(shù)
d. 配置模塊的路由映射
myblog模塊中創(chuàng)建一個(gè)路由模塊urls.py
e. 將模塊中的路由滋恬,添加到根項(xiàng)目的路由中
根項(xiàng)目的路由:主路由
模塊中的路由:子路由
|
小總結(jié):
1. 創(chuàng)建Django****項(xiàng)目:公司門戶項(xiàng)目
**django-admin startproject myproject **
創(chuàng)建了一個(gè)名稱為myproject****的項(xiàng)目
2. 配置語(yǔ)言環(huán)境
打開(kāi)創(chuàng)建的項(xiàng)目配置文件myproject/myproject/settings.py
修改配置選項(xiàng)如下:
# LANGUAGE_CODE = ‘en_us****’ 注釋掉
LANGUAGE_CODE = ‘zh_Hans’ 添加
3. 定義門戶首頁(yè)的視圖
在myproject/myproject/****文件夾下聊训,創(chuàng)建一個(gè)views.py****視圖模塊
編輯函數(shù)如下:
# 引入模塊
from django.http import HttpResponse
# 定義處理函數(shù)
def index(request):
return HttpResponse(“****公司首頁(yè)”)
4. 配置主路由
打開(kāi)myproject/myproject/urls.py****路由模塊
編輯內(nèi)容如下
from django.conf.urls import url
from django.contrib import admin
from . import views
urlpatterns = [
url(r‘^admin/’, admin.site.urls),
url(r‘^$’, views.index, name=’index’),
]
5. 運(yùn)行項(xiàng)目,測(cè)試主項(xiàng)目是否能訪問(wèn)成功
cd myproject/ 進(jìn)入項(xiàng)目主目錄 【切記不要進(jìn)入根項(xiàng)目】
python manage.py runserver 運(yùn)行程序
打開(kāi)瀏覽器恢氯,訪問(wèn)http://localhost:8000就可以查看到 公司首頁(yè) 的視圖
|
|
6. 創(chuàng)建一個(gè)模塊應(yīng)用——公司博客
進(jìn)入主目錄带斑,執(zhí)行命令創(chuàng)建博客模塊
cd myproject/ 進(jìn)入項(xiàng)目主目錄 【切記不要進(jìn)入根項(xiàng)目】
django-admin startapp myblog
7. 將模塊項(xiàng)目添加到根項(xiàng)目中
修改myproject/myproject/settings.py****配置文件
INSTALLED_APPS****配置選項(xiàng)的列表中鼓寺,在末尾添加上模塊名稱
INSTALLED_APPS = [
..
‘myblog’,
]
8. 配置模塊子路由文件
在myproject/myblog/****文件夾下,常見(jiàn)一個(gè)路由配置文件urls.py****【子路由】
編輯內(nèi)容如下
from django.conf.urls import url
from . import views
urlpatterns = [
** url(r‘^$’, views.index, name=”index”),**
]
9. 將子路由勋磕,添加到根項(xiàng)目的主路由中
修改根項(xiàng)目主路由文件myproject/myproject/urls.py****妈候,編輯內(nèi)容如下:
from django.conf.urls import url, include
from django.contrib import admin
from . import views
urlpatterns = [
url(r‘^admin/’, admin.site.urls),
url(r‘^myblog/’, include(‘myblog.urls’)),
url(r’^$’, views.index, name=’index’),
]
10. 運(yùn)行測(cè)試
在中目錄中,執(zhí)行命令啟動(dòng)服務(wù)器
python manage.py runserver
打開(kāi)瀏覽器挂滓,訪問(wèn)項(xiàng)目:公司首頁(yè)
打開(kāi)瀏覽器苦银,訪問(wèn)模塊:公司博客首頁(yè)
|
|
任務(wù):梳理總結(jié) [****百度]
Django****框架的描述
MVC****處理模式描述
MVT****處理模式的描述
B/S C/S****軟件結(jié)構(gòu)的描述
B2B C2C B2C****業(yè)務(wù)結(jié)構(gòu)的描述
簡(jiǎn)單搭建項(xiàng)目測(cè)試:
了解Django****項(xiàng)目和模塊項(xiàng)目的創(chuàng)建以及使用過(guò)程[]
模擬上午的內(nèi)容,自行搭建Django****項(xiàng)目——
|
|
預(yù)留1個(gè)小時(shí)
沒(méi)有完成的學(xué)員——完成梳理總結(jié)和第一個(gè)版本的項(xiàng)目開(kāi)發(fā)
初步完成的學(xué)員——按照有條理的方式赶站,將文檔進(jìn)行二次整理幔虏,發(fā)布到簡(jiǎn)書上!
|
Django web項(xiàng)目開(kāi)發(fā)以及處理流程
- Django項(xiàng)目的請(qǐng)求處理流程
創(chuàng)建項(xiàng)目:django-admin startproject mysite
項(xiàng)目中的各個(gè)文件夾:
|-- mysite/ 項(xiàng)目的主目錄[包含了項(xiàng)目中所有的文件信息]
|-- mysite/ 項(xiàng)目的根項(xiàng)目贝椿、主項(xiàng)目[管理所有的模塊項(xiàng)目]
|-- init.py 包(package)聲明文件
|-- settings.py 項(xiàng)目配置信息[項(xiàng)目中所有開(kāi)關(guān)性質(zhì)的變量-LANGUAGE_CODE]
|-- urls.py 項(xiàng)目的主路由配置文件[路由:映射url地址和調(diào)用處理函數(shù)]
|-- wsgi.py Django項(xiàng)目實(shí)現(xiàn)Wsgi網(wǎng)關(guān)協(xié)議的模塊
|-- manage.py 命令模塊想括,支持django可以通過(guò)命令操作項(xiàng)目中的指定功能
定義視圖處理函數(shù):views.py模塊中定義
定義一個(gè)普通函數(shù),可以在路由模塊中綁定給指定的url地址烙博;通過(guò)Url地址的方式調(diào)用這個(gè)普通函數(shù)[可以通過(guò)url地址調(diào)用執(zhí)行的普通函數(shù):視圖處理函數(shù)]
視圖處理函數(shù)中的返回值:HttpResponse
Http:超文本傳輸協(xié)議
Response:響應(yīng)數(shù)據(jù)
HttpResponse:支持超文本數(shù)據(jù)傳輸?shù)囊粋€(gè)響應(yīng)對(duì)象
路由配置:將視圖處理函數(shù)瑟蜈,綁定到指定的url地址上
可以通過(guò)瀏覽器中訪問(wèn)url地址,調(diào)用執(zhí)行指定的views.py模塊中的視圖處理函數(shù)
根項(xiàng)目中的路由配置渣窜,[根項(xiàng)目中的路由:主路由]通過(guò)mysite/mysite/urls.py模塊
啟動(dòng)項(xiàng)目踪栋,直接通過(guò)瀏覽器進(jìn)行訪問(wèn)測(cè)試
注意:代碼開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)完一個(gè)完整的小流程图毕,就需要運(yùn)行測(cè)試這個(gè)小流程是否正確;千萬(wàn)切記不要等到所有功能一次性寫完再運(yùn)行測(cè)試此時(shí)如果出現(xiàn)大量報(bào)錯(cuò)眷唉!就需要非常有經(jīng)驗(yàn)的老司機(jī)才能準(zhǔn)確判斷出錯(cuò)位置和排查錯(cuò)誤予颤!
創(chuàng)建子項(xiàng)目/模塊項(xiàng)目
django-admin startapp blog
項(xiàng)目整體文件結(jié)構(gòu)
|-- mysite / 項(xiàng)目主目錄
|-- mysite/ 根項(xiàng)目
|-- init.py
|-- settings.py
|-- urls.py
|-- views.py
|-- wsgi.py
|-- blog/ 子項(xiàng)目
|-- init.py
|-- admin.py 后臺(tái)管理相關(guān)[后臺(tái)管理部分詳細(xì)說(shuō)明]
|-- app.py 項(xiàng)目描述文件[子項(xiàng)目名稱]
|-- models.py 子項(xiàng)目中數(shù)據(jù)模型的定義[****明天詳細(xì)講]
|-- views.py 子項(xiàng)目中的視圖函數(shù)處理模塊
|-- urls.py 子項(xiàng)目中的路由模塊[子路由]
|-- test.py 測(cè)試模塊[以后擴(kuò)展]
|-- manager.py
定義子項(xiàng)目視圖模塊——定義子項(xiàng)目中的首頁(yè)視圖處理函數(shù)
mysite/blog/views.py
定義子路由操作——配置子項(xiàng)目中的路由模塊
本身該文件在創(chuàng)建項(xiàng)目時(shí)是不存在的,需要手工創(chuàng)建
mysite/blog/urls.py
子路由和主路由的關(guān)系
訪問(wèn)關(guān)系冬阳,用戶在瀏覽器客戶端發(fā)起的請(qǐng)求地址蛤虐,首先會(huì)進(jìn)入主路由進(jìn)行查詢,查詢不到匹配的地址肝陪,就會(huì)進(jìn)入對(duì)應(yīng)的子路由進(jìn)行查詢驳庭,知道查詢匹配成功返回指定視圖函數(shù)執(zhí)行的結(jié)果!如果查詢不到氯窍,就會(huì)返回404錯(cuò)誤頁(yè)面[資源沒(méi)有找到]
簡(jiǎn)短總結(jié):
Django入門部分
l web****應(yīng)用程序開(kāi)發(fā)步驟
n 創(chuàng)建主項(xiàng)目
n 定義根項(xiàng)目中的視圖處理函數(shù)
n 配置根項(xiàng)目中的路由模塊[主路由]
n 創(chuàng)建子項(xiàng)目(子項(xiàng)目——>添加到根項(xiàng)目管理中-> settgins.py-INSTALLED_APPS)
n 定義子項(xiàng)目中的視圖處理函數(shù)
n 配置子項(xiàng)目中的路由模塊[子路由]
n 配置子路由和主路由之間的關(guān)聯(lián)關(guān)系
l 引入的各種包
n 視圖模塊:from django.http import HttpResponse
n 路由模塊:from django.conf.urls import url, include
u from . import views
晚自習(xí)項(xiàng)目任務(wù):搜狐門戶開(kāi)發(fā)
提示如下:
根項(xiàng)目django-admin startproject sohu
子項(xiàng)目django-admin startapp sohu_email
django-admin startapp sohu_blog
django-admin startapp sohu_news
django-admin startapp sohu_tv
..