1. 程式人生 > >廖雪峰python3複習總結——day12-2

廖雪峰python3複習總結——day12-2

 Web開發:

CS架構:Client/Server模式,軟體主要執行在桌面上,而資料庫這樣的軟體執行在伺服器端。CS架構不適合Web,最大的原因是Web應用程式的修改和升級非常迅速,而CS架構需要每個客戶端逐個升級桌面App。

BS架構:,Browser/Server模式,客戶端只需要瀏覽器,應用程式的邏輯和資料都儲存在伺服器端。

Web應用開發可以說是目前軟體開發中最重要的部分。Web開發也經歷了好幾個階段:

  1. 靜態Web頁面:由文字編輯器直接編輯並生成靜態的HTML頁面,如果要修改Web頁面的內容,就需要再次編輯HTML原始檔,早期的網際網路Web頁面就是靜態的;

  2. CGI:由於靜態Web頁面無法與使用者互動,比如使用者填寫了一個登錄檔單,靜態Web頁面就無法處理。要處理使用者傳送的動態資料,出現了Common Gateway Interface,簡稱CGI,用C/C++編寫。

  3. ASP/JSP/PHP:由於Web應用特點是修改頻繁,用C/C++這樣的低階語言非常不適合Web開發,而指令碼語言由於開發效率高,與HTML結合緊密,因此,迅速取代了CGI模式。ASP是微軟推出的用VBScript指令碼程式設計的Web開發技術,而JSP用Java來編寫指令碼,PHP本身則是開源的指令碼語言。

  4. MVC:為了解決直接用指令碼語言嵌入HTML導致的可維護性差的問題,Web應用也引入了Model-View-Controller的模式,來簡化Web開發。ASP發展為ASP.Net,JSP和PHP也有一大堆MVC框架。

HTTP協議簡介

  • HTML是一種用來定義網頁的文字,會HTML,就可以編寫網頁;

  • HTTP是在網路上傳輸HTML的協議,用於瀏覽器和伺服器的通訊。

\n是換行,英文是New line \r是回車,英文是Carriage return 機械打字機有回車和換行兩個鍵作用分別是: 1、換行就是把滾筒卷一格,不改變水平位置。 2、回車就是把水平位置復位,不捲動滾筒。

\r\n使游標移動到本行行首,然後移動到下一行行首

HTML簡介

如果要學習Web開發,首先要對HTML、CSS和JavaScript作一定的瞭解。HTML定義了頁面的內容,CSS來控制頁面元素的樣式,而JavaScript負責頁面的互動邏輯。

講解HTML、CSS和JavaScript就可以寫3本書,對於優秀的Web開發人員來說,精通HTML、CSS和JavaScript是必須的,這裡推薦一個線上學習網站w3schools:

以及一個對應的中文版本:

當我們用Python或者其他語言開發Web應用時,我們就是要在伺服器端動態創建出HTML,這樣,瀏覽器就會向不同的使用者顯示出不同的Web頁面。

WSGI介面

Web應用的本質就是:

  1. 瀏覽器傳送一個HTTP請求;

  2. 伺服器收到請求,生成一個HTML文件;

  3. 伺服器把HTML文件作為HTTP響應的Body傳送給瀏覽器;

  4. 瀏覽器收到HTTP響應,從HTTP Body取出HTML文件並顯示。

所以,最簡單的Web應用就是先把HTML用檔案儲存好,用一個現成的HTTP伺服器軟體,接收使用者請求,從檔案中讀取HTML,返回。如果要動態生成HTML,就需要把上述步驟自己來實現。不過,接受HTTP請求、解析HTTP請求、傳送HTTP響應都是苦力活,如果我們自己來寫這些底層程式碼,還沒開始寫動態HTML呢,就得花個把月去讀HTTP規範。

正確的做法是底層程式碼由專門的伺服器軟體實現,我們用Python專注於生成HTML文件。因為我們不希望接觸到TCP連線、HTTP原始請求和響應格式,所以,需要一個統一的介面,讓我們專心用Python編寫Web業務。

這個介面就是WSGI:Web Server Gateway Interface。

無論多麼複雜的Web應用程式,入口都是一個WSGI處理函式。HTTP請求的所有輸入資訊都可以通過environ獲得,HTTP響應的輸出都可以通過start_response()加上函式返回值作為Body。

複雜的Web應用程式,光靠一個WSGI函式來處理還是太底層了,我們需要在WSGI之上再抽象出Web框架,進一步簡化Web開發。

Web框架

WSGI提供的介面雖然比HTTP介面高階了不少,但和Web App的處理邏輯比,還是比較低階,我們需要在WSGI介面之上能進一步抽象,讓我們專注於用一個函式處理一個URL,至於URL到函式的對映,就交給Web框架來做。

由於用Python開發一個Web框架十分容易,所以Python有上百個開源的Web框架。

常見的Python Web框架還有:

  • Flask:比較流行的Web框架
  • Django:全能型Web框架;

  • web.py:一個小巧的Web框架;

  • Bottle:和Flask類似的Web框架;

  • Tornado:Facebook的開源非同步Web框架。

使用模板

MVC:Model-View-Controller,中文名“模型-檢視-控制器”。分離了Python程式碼和HTML程式碼。HTML程式碼全部放到模板裡,寫起來更有效率。

常見的模板有:

  • Mako:用<% ... %>${xxx}的一個模板;

  • Cheetah:也是用<% ... %>${xxx}的一個模板;

  • Django:Django是一站式框架,內建一個用{% ... %}{{ xxx }}的模板。

  • Jinja2:Flask預設模板