Python輕量級Web框架:Bottle函式庫!

WBOY
發布: 2023-04-13 14:10:06
轉載
1266 人瀏覽過

Python輕量級Web框架:Bottle函式庫!

和它本身的輕量一樣,Bottle函式庫的使用也很簡單。相信在看到本文前,讀者對python也已經有了簡單的了解。那麼究竟何種神祕的操作,才能用百行程式碼完成一個伺服器的功能呢?讓我們拭目以待。

1. Bottle庫安裝

1)使用pip安裝

Python輕量級Web框架:Bottle函式庫!

2)下載Bottle檔案

https://github.com/bottlepy/bottle/blob/master/bottle.py

2.「HelloWorld!」

所謂萬事功成先HelloWorld,從這個簡單的範例中,了解Bottle的基本機制。

先上程式碼:

Python輕量級Web框架:Bottle函式庫!

#首先我們從bottle函式庫中匯入get和run兩個方法。

接下來,我們要建立一個網站,首先要有一個ip位址和一個連接埠(port),這部分功能由run來完成,在測試環節我們就使用127.0.0.1(本機位址)和80埠(瀏覽器預設埠)來:

運行這段程式碼python HelloWorld.py

Python輕量級Web框架:Bottle函式庫!

##這樣網站伺服器就處於運作狀態啦,開啟瀏覽器,輸入127.0.0.1(:80)


Python輕量級Web框架:Bottle函式庫!

熟悉的404,錯誤提示Not found:'/' 。這是當然的,因為網站除了伺服器之外,還有很重要的成分──網頁啊!


瀏覽器訪問ip位址時,即向這個ip發送了get請求,等待返回網頁數據,那麼我們的bottle庫裡,封裝了get方法,用來實現這一過程。


程式碼如下:


Python輕量級Web框架:Bottle函式庫!

不知道大家是否認識def上面的@符號,這個符號是python語法中的裝飾器的意思,可以簡單的理解為使用get函數對homepage進行修飾。在這裡,@get(‘/’)即將homepage裝飾成了瀏覽器發送GET 127.0.0.1/這個請求時的對應函數。可以做任意處理,最後回傳get請求的對應。這裡就回到了簡單的HelloWorld頁面,再次運行,有這樣的效果:


Python輕量級Web框架:Bottle函式庫!

#也可以使用bottle中封裝的template方法,將網頁資料單獨寫在.tpl檔中,範例如下:


Python輕量級Web框架:Bottle函式庫!

run函數還有一個參數reloader,設定為True將會開啟自動重載,網頁伺服器會在你做出任何更改時自動重載伺服器,可實現網站的熱更新。


3. 動態路由及檔案下載

如上我們使用的get('/'),​​本質上是一種靜態路由,在伺服器運作前就確定好的位址可以用這種方法來進行路由。


那麼如果是伺服器運行時呢?比如說網站伺服器上訪問文件,當然不能採取靜態的方式,這時候我們就可以採用動態路由。


Bottle的動態路由,由route方法實現,和get類似,也是採用裝飾器來修飾函數實現路由功能。


Python輕量級Web框架:Bottle函式庫!

這裡我們看到在裝飾器的參考中出現了一個與眾不同的東西:'name'。被其修飾的函數的參數與冒號後的參量同名,而在函數中,就可以使用name這個參數作為處​​理變量,最後回傳回應即可。


Python輕量級Web框架:Bottle函式庫!

而動態路由即可為檔案路由提供便利。一個伺服器中可能存放著數百上千的文件,不可能每個都依靠靜態位址。


Python輕量級Web框架:Bottle函式庫!

這裡我們可以看到一個新的函數static_file,第一個參數是檔案名,第二個參數是根目錄位址(也就是這個檔案的位置),目前文件系統為:

--HelloWorld.py

--store1.txt

存取瀏覽器得到

Python輕量級Web框架:Bottle函式庫!

當然你也可以把檔案放在資料夾裡,只要把root參數更換成資料夾的位址即可。

4. POST的回應與檔案上傳

如果要實現更複雜的功能,我們不但需要使用GET方法,也需要POST方法。這裡我們使用HTML語言中的Form來示範Bottle函式庫對於POST請求的回應。

Python輕量級Web框架:Bottle函式庫!

首先我們實作一個上傳檔案的窗口,如上。

此處的頁面為一個簡單的表單提交介面,在此不做詳細介紹,開啟頁面如下:

Python輕量級Web框架:Bottle函式庫!

接下來的POST回應,程式碼如下:

Python輕量級Web框架:Bottle函式庫!

從Bottle庫匯入post方法和request。

和get方法類似,使用post裝飾回應函數,之後在函數體中使用request即可取得網站伺服器接受到的post請求體。 request.forms.get()方法可以將表單中對應Key的字串取出,request.files.get()方法可以將表單中對應Key的檔案取出,使用save方法將資料儲存就實現了檔案的上傳。

接下來我們進行一次測試:

Python輕量級Web框架:Bottle函式庫!

#點擊上傳後,我們開啟伺服器根目錄(就是python檔案的位置) ,查看發現檔案已經上傳成功!

Python輕量級Web框架:Bottle函式庫!

5. 小結

在完成這些功能後,你一定想把bottle部署到網路上吧,畢竟只在本地運行的話,網站又有什麼作用呢?

清華網為我們每一個網路存取點都提供了公網ip,在cmd中使用ipconfig查看ip位址,將run中的運作參數改為你的公網ip,然後在任何一台裝置的瀏覽器上(建議手機,電腦瀏覽器有時候會很慢)輸入ip位址和連接埠號碼(預設80),就可以存取!

Bottle庫還有很多強大的功能,Cookie的讀寫、插件的安裝卸載與禁用都不在話下,也可以將Bottle部署到其他的伺服器,非常簡單的實現多線程,這些功能有待讀者大大發掘哦!

以上是Python輕量級Web框架:Bottle函式庫!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!