前言: 今天寫一篇博客簡單介紹下web框架,下篇博客介紹下django框架~~
一、WSGI
眾所周知,對(duì)于所有的Web應(yīng)用,本質(zhì)上其實(shí)就是一個(gè)socket服務(wù)端,用戶的瀏覽器其實(shí)就是一個(gè)socket客戶端。
View Code
對(duì)于真實(shí)開發(fā)中的python web程序來說,一般會(huì)分為兩部分:服務(wù)器程序和應(yīng)用程序。服務(wù)器程序負(fù)責(zé)對(duì)socket服務(wù)器進(jìn)行封裝,并在請(qǐng)求到來時(shí),對(duì)請(qǐng)求的各種數(shù)據(jù)進(jìn)行整理。應(yīng)用程序則負(fù)責(zé)具體的邏輯處理。為了方便應(yīng)用程序的開發(fā),就出現(xiàn)了眾多的Web框架,例如:Django、Flask、web.py 等。不同的框架有不同的開發(fā)方式,但是無論如何,開發(fā)出的應(yīng)用程序都要和服務(wù)器程序配合,才能為用戶提供服務(wù)。這樣,服務(wù)器程序就需要為不同的框架提供不同的支持。這樣混亂的局面無論對(duì)于服務(wù)器還是框架,都是不好的。對(duì)服務(wù)器來說,需要支持各種不同框架,對(duì)框架來說,只有支持它的服務(wù)器才能被開發(fā)出的應(yīng)用使用。這時(shí)候,標(biāo)準(zhǔn)化就變得尤為重要。我們可以設(shè)立一個(gè)標(biāo)準(zhǔn),只要服務(wù)器程序支持這個(gè)標(biāo)準(zhǔn),框架也支持這個(gè)標(biāo)準(zhǔn),那么他們就可以配合使用。一旦標(biāo)準(zhǔn)確定,雙方各自實(shí)現(xiàn)。這樣,服務(wù)器可以支持更多支持標(biāo)準(zhǔn)的框架,框架也可以使用更多支持標(biāo)準(zhǔn)的服務(wù)器。
WSGI(Web Server Gateway Interface)WEB服務(wù)網(wǎng)關(guān)接口是一種規(guī)范,它定義了使用python編寫的web app與web server之間接口格式,實(shí)現(xiàn)web app與web server間的解耦。
python標(biāo)準(zhǔn)庫提供的獨(dú)立WSGI服務(wù)器稱為wsgiref。