HTTP協(xié)議簡介在Web應(yīng)用中,服務(wù)器把網(wǎng)頁傳給瀏覽" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > Python Web開發(fā)

Python Web開發(fā)

時間:2023-05-24 12:33:02 | 來源:網(wǎng)站運營

時間:2023-05-24 12:33:02 來源:網(wǎng)站運營

Python Web開發(fā):

Web開發(fā)

Web應(yīng)用開發(fā)可以說是目前軟件開發(fā)中最重要的部分。由于Python是一種解釋型的腳本語言,不僅開發(fā)效率高,而且運行速度快,所以非常適合用來做Web開發(fā)。

HTTP協(xié)議簡介

在Web應(yīng)用中,服務(wù)器把網(wǎng)頁傳給瀏覽器,實際上就是把網(wǎng)頁的HTML代碼發(fā)送給瀏覽器,讓瀏覽器顯示出來。而瀏覽器和服務(wù)器之間的傳輸協(xié)議是HTTP,所以:

HTTP請求

Web采用的HTTP協(xié)議采用了非常簡單的請求-響應(yīng)模式,從而大大簡化了開發(fā)。當(dāng)我們編寫一個頁面時,我們只需要在HTTP響應(yīng)中吧HTML發(fā)送出去,不需要考慮如何附帶圖片、視頻等,瀏覽器如果需要請求圖片和視頻,它會發(fā)送另一個HTTP請求,因此,一個HTTP請求只能處理一個資源。

HTTP格式

每個HTTP請求和響應(yīng)都遵循相同的格式,一個HTTP包含Header和Body兩部分,其中Body是可選的。
HTTP協(xié)議是一種文本協(xié)議,所以,它的格式也非常簡單。HTTP GET請求的格式:

POST /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3 body data goes here... 每個Header一行一個,換行符是/r/n
當(dāng)遇到連續(xù)兩個/r/n時,Header部分結(jié)束,后面的數(shù)據(jù)全部是Body。
POST表示一個讀取請求,將從服務(wù)器獲得網(wǎng)頁數(shù)據(jù),/表示URL的路徑,URL總是以/開頭,/就表示首頁,最后的HTTP/1.1指示采用的HTTP協(xié)議版本是1.1。目前HTTP協(xié)議的版本就是1.1,但是大部分服務(wù)器也支持1.0版本,主要區(qū)別在于1.1版本允許多個HTTP請求復(fù)用一個TCP連接,以加快傳輸速度。
注意,Body的數(shù)據(jù)類型由Content-Type頭來確定,如果是網(wǎng)頁,Body就是文本,如果是圖片,Body就是圖片的二進(jìn)制數(shù)據(jù)。
當(dāng)存在Content-Encoding時,Body數(shù)據(jù)是被壓縮的,最常見的壓縮方式是gzip,所以,看到Content-Encoding: gzip時,需要將Body數(shù)據(jù)先解壓縮,才能得到真正的數(shù)據(jù)。壓縮的目的在于減少Body的大小,加快網(wǎng)絡(luò)傳輸。
從第二行開始,每一行都類似于key: value:

Host: www.sina.com.cn 表示請求的域名是www.sina.com.cn。如果一臺服務(wù)器有多個網(wǎng)站,服務(wù)器就需要通過Host來區(qū)分瀏覽器請求的是哪個網(wǎng)站。
HTTP響應(yīng)的格式:

200 OK Header1: Value1 Header2: Value2 Header3: Value3 body data goes here... 200表示一個成功的響應(yīng),后面的OK是說明。失敗的響應(yīng)有404 Not Found:網(wǎng)頁不存在,500 Internal Server Error:服務(wù)器內(nèi)部出錯,等等。

Content-Type: text/html Content-Type指示響應(yīng)的內(nèi)容,這里是text/html表示HTML網(wǎng)頁。請注意,瀏覽器就是依靠Content-Type來判斷響應(yīng)的內(nèi)容是網(wǎng)頁還是圖片,是視頻還是音樂。瀏覽器并不靠URL來判斷響應(yīng)的內(nèi)容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是圖片。

WSGI接口

一個Web應(yīng)用的本質(zhì)就是:

  1. 瀏覽器發(fā)送一個HTTP請求;
  2. 服務(wù)器收到請求,生成一個HTML文檔;
  3. 服務(wù)器把HTML文檔作為HTTP響應(yīng)的Body發(fā)送給瀏覽器;
  4. 瀏覽器收到HTTP響應(yīng),從HTTP Body取出HTML文檔并顯示。
所以,最簡單的Web應(yīng)用就是先把HTML用文件保存好,用一個現(xiàn)成的HTTP服務(wù)器軟件,接收用戶請求,從文件中讀取HTML,返回。Apache、Nginx等這些常見的靜態(tài)服務(wù)器就是干這件事情的。
如果要動態(tài)生成HTML,就需要把上述步驟自己來實現(xiàn)。不過,接收HTTP請求、解析HTTP請求、發(fā)送HTTP響應(yīng)都是苦力活,我們不希望接觸到TCP連接、HTTP原始請求和響應(yīng)格式,所以,需要一個統(tǒng)一的接口,讓我們專心用Python編寫Web業(yè)務(wù)。
這個接口就是WSGI:Web Server Gateway Interface。
WSGI接口定義非常簡單,它只要求Web開發(fā)者實現(xiàn)一個函數(shù),就可以響應(yīng)HTTP請求。
Python內(nèi)置了一個WSGI服務(wù)器,這個模塊叫wsgiref,它是用純Python編寫的WSGI服務(wù)器的參考實現(xiàn)。所謂“參考實現(xiàn)”是指該實現(xiàn)完全符合WSGI標(biāo)準(zhǔn),但是不考慮任何運行效率,僅供開發(fā)和測試使用。
復(fù)雜的Web應(yīng)用程序,光靠一個WSGI函數(shù)來處理還是太底層了,我們需要在WSGI之上再抽象出Web框架,進(jìn)一步簡化Web開發(fā)。

使用Web框架

由于用Python開發(fā)一個Web框架十分容易,所以Python有上百個開源的Web框架。這里我們先不討論各種Web框架的優(yōu)缺點,常見的Python Web框架有:

當(dāng)然了,因為開發(fā)Python的Web框架也不是什么難事,我們后面也會講到開發(fā)Web框架的內(nèi)容。

使用模板

俗話說得好,不懂前端的Python工程師不是好的產(chǎn)品經(jīng)理。有Web開發(fā)經(jīng)驗的同學(xué)都明白,Web App最復(fù)雜的部分就在HTML頁面。HTML不僅要正確,還要通過CSS美化,再加上復(fù)雜的JavaScript腳本來實現(xiàn)各種交互和動畫效果??傊?,生成HTML頁面的難度很大。
由于在Python代碼里拼字符串是不現(xiàn)實的,所以,模板技術(shù)出現(xiàn)了。
使用模板,我們需要預(yù)先準(zhǔn)備一個HTML文檔,這個HTML文檔不是普通的HTML,而是嵌入了一些變量和指令,然后,根據(jù)我們傳入的數(shù)據(jù),替換后,得到最終的HTML,發(fā)送給用戶:

這就是傳說中的MVC:Model-View-Controller,中文名“模型-視圖-控制器”。

Python處理URL的函數(shù)就是C:Controller,Controller負(fù)責(zé)業(yè)務(wù)邏輯,比如檢查用戶名是否存在,取出用戶信息等等;

包含變量{{ name }}的模板就是V:View,View負(fù)責(zé)顯示邏輯,通過簡單地替換一些變量,View最終輸出的就是用戶看到的HTML。

MVC中的Model在哪?Model是用來傳給View的,這樣View在替換變量的時候,就可以從Model中取出相應(yīng)的數(shù)據(jù)。

上面的例子中,Model就是一個dict:

{ 'name': 'Michael' } 只是因為Python支持關(guān)鍵字參數(shù),很多Web框架允許傳入關(guān)鍵字參數(shù),然后,在框架內(nèi)部組裝出一個dict作為Model。
通過MVC,我們在Python代碼中處理M:Model和C:Controller,而V:View是通過模板處理的,這樣,我們就成功地把Python代碼和HTML代碼最大限度地分離了。
使用模板的另一大好處是,模板改起來很方便,而且,改完保存后,刷新瀏覽器就能看到最新的效果,這對于調(diào)試HTML、CSS和JavaScript的前端工程師來說實在是太重要了。
有了MVC,我們就分離了Python代碼和HTML代碼。HTML代碼全部放到模板里,寫起來更有效率。
愿疫情早日結(jié)束,不要忘記點贊收藏或評論嗷~

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉