當前位置:首頁 >教程首頁 > IT 學院 > 人工智能+Python開發工程師班 >如何用Python寫一個Web應用?

如何用Python寫一個Web應用?

發布時間:2019-07-12 09:41:03

如何用Python寫一個Web應用?今天就給大家分享這部分的內容,一起來了解下吧!

2.jpg

網絡協議

首先,要在網絡上進行通信,就需要有相關網絡協議,例如TCP/IP,UDP……等等。

當然你可以說我直接選用一個框架作為開始,不想了解這麼多東西。那樣也沒問題,不過到一定的時間,相信你還是會願意回過頭來看一看這些基礎知識的。

提到網絡編程,你一定見過Socket,翻譯過來是套接字。這個是啥,相信你也和我一樣在初見到它的時候一頭霧水,我覺得是翻譯的不好,引用一段我覺得還算不錯的解釋:

Socket是網絡編程的一個抽象概念。通常我們用一個Socket表示“打開了一個網絡鏈接”,而打開一個Socket需要知道目標計算機的IP地址和端口號,再指定協議類型即可。

那麼,拋開各種框架不談,直接用Python去進行網絡編程時,一般會用到socket模塊。具體示例代碼,我隨便找了本書上的偽代碼抄在下麵

1-1.jpg

1-2.jpg

流程是這樣:先創建一個服務器端,再創建一個客戶端,

然後它們開始參與發送和接收的對話,直到連接終止。

具體操作的時候,我們需要打開兩個命令行窗口,一個運行服務器程序,另一個運行客戶端程序,就可以看到對話的效果了。

到這裏你應該有了一個大致的概念:在網絡上通信,需要通信的雙方,以及網絡協議,然後建立起聯係。

Web開發

Web當然是網絡的一部分。

在Web應用中,服務器把網頁傳給瀏覽器,實際上就是把網頁的HTML代碼發送給瀏覽器,讓瀏覽器顯示出來。而瀏覽器和服務器之間的傳輸協議是HTTP,所以:

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

HTTP是在網絡上傳輸HTML的協議,用於瀏覽器和服務器的通信。

看來,HTTP協議是Web開發中,十分重要的協議了。關於HTTP協議的具體知識,推薦一本書《圖解HTTP協議》。

因此,在Web應用中,經常在做接受HTTP請求、解析HTTP請求、發送HTTP響應這些苦力活。所以,如果需要自己動手實現,就得接觸到TCP連接、HTTP原始請求和響應格式,估計還得閱讀不少相關規範。

WSGI

可是大部分Web應用的開發者並不想把時間耗費在這些苦力活上,因此,WSGI應運而生了。其全稱是Web Server Gateway Interface。

WSGI接口定義非常簡單,它隻要求Web開發者實現一個函數,就可以響應HTTP請求。

Python也內置了一個WSGI服務器,這個模塊叫wsgiref,它是用純Python編寫的WSGI服務器的參考實現。所謂“參考實現”是指該實現完全符合WSGI標準,但是不考慮任何運行效率,僅供開發和測試使用。

了解了WSGI框架,我們發現:其實一個Web App,就是寫一個WSGI的處理函數,針對每個HTTP請求進行響應。

但是當HTTP請求、URL多起來的時候,問題又出現了:如何處理URL和處理函數之間的映射關係?

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

因此,Python內置的WSGI服務器當然不足以滿足許多人的需要,好在我們還有其他的框架可以選用。

Web框架

目前運行在WSGI協議之上的Web框架非常多。從個人經驗角度而言:輕量級選Flask、重量級選Django,當然還有其他的,不過我沒有去深入了解,各位可以自行搜索。

學習它們的教程也很多,比如Flask就有“狼書”《Flask Web開發實戰:入門、進階與原理解析》、“狗書”《Flask Web開發:基於Python的Web應用開發實戰》等不錯的參考書籍。

當然,這些框架也都對WSGI進行了各自的實現。

因為每個Web框架都不是專注於實現服務器方麵的,所以這些WSGI服務器一般也就是開發調試時使用。在生產環境部署的時候,不會簡單的使用Web框架自帶的服務器。

實際環境使用的WSGI服務器

Gunicorn

最流行的大概就是這個了吧。

uwsgi

因為使用C語言開發,會和底層接觸的更好。

一般生產環境上,也就是二者選其一了。我目前在用的是Gunicorn。

小結

閱讀完這篇文章,你應該能夠從網絡編程的基本原理,到框架選用,再到生產環境的部署,都有了相關概念了。

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答
  • 廣州視頻剪輯培訓機構有哪些

    在廣州這座繁華的都市中,數字創意產業正蓬勃發展,廣州視頻剪輯培訓成為許多影視愛好者的理想起點。隨著短視頻平台和影視製作需求的激......

  • 北京UI設計培訓免費試聽攻略

    在北京這樣一座充滿創意活力的都市,UI設計培訓正成為無數年輕人追逐職業夢想的跳板。隨著數字經濟的蓬勃發展,UI設計行業在北京展......

  • 北京平麵設計培訓機構排名榜

    在當今創意經濟蓬勃發展的浪潮中,北京平麵設計培訓成為眾多職業追求者的理想起點。這座城市的活力與機遇吸引著無數人投身視覺藝術領域......

  • 北京虛幻引擎課程內容全解析

    在影視和設計行業蓬勃發展的今天,虛幻引擎作為核心技術工具,正引領著視覺創作的革命。越來越多的人渴望掌握這門技能,而專業的培訓成......

  • 北京平麵設計課程如何選擇適合的

    在北京這座文化創意中心,平麵設計培訓行業蓬勃發展,為渴望入行的學員提供了豐富機遇。隨著數字媒體和影視產業的崛起,掌握視覺傳達技......

  • 上海3D建模短訓班課程內容解析

    在上海這座充滿活力的城市,影視和設計行業正迎來前所未有的發展機遇,數字技術的進步讓3D建模成為創意產業的核心驅動力。參加專業的......

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定