成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python輕量級(jí)Web框架:Bottle庫(kù)!

開發(fā) 后端
Bottle是一個(gè)超輕量級(jí)的python庫(kù)。說(shuō)是庫(kù),其本身只由一個(gè)4000行左右的文件構(gòu)成,并且不需要任何依賴,只靠python標(biāo)準(zhǔn)庫(kù)即可運(yùn)作。

和它本身的輕便一樣,Bottle庫(kù)的使用也十分簡(jiǎn)單。相信在看到本文前,讀者對(duì)python也已經(jīng)有了簡(jiǎn)單的了解。那么究竟何種神秘的操作,才能用百行代碼完成一個(gè)服務(wù)器的功能?讓我們拭目以待。

1. Bottle庫(kù)安裝

1)使用pip安裝

2)下載Bottle文件

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

2.“HelloWorld!”

所謂萬(wàn)事功成先HelloWorld,從這個(gè)簡(jiǎn)單的示例中,了解Bottle的基本機(jī)制。

先上代碼:

首先我們從bottle庫(kù)中導(dǎo)入get和run兩個(gè)方法。

接下來(lái),我們要構(gòu)建一個(gè)網(wǎng)站,首先要有一個(gè)ip地址和一個(gè)端口(port),這部分功能由run來(lái)完成,在測(cè)試環(huán)節(jié)我們就使用127.0.0.1(本機(jī)地址)和80端口(瀏覽器默認(rèn)端口)來(lái):

運(yùn)行這段代碼 python HelloWorld.py

這樣網(wǎng)站服務(wù)器就處于運(yùn)行狀態(tài)啦,打開瀏覽器,輸入127.0.0.1(:80)

熟悉的404,錯(cuò)誤提示Not found:‘/’。這是當(dāng)然的,因?yàn)榫W(wǎng)站除了服務(wù)器之外,還有很重要的成分——網(wǎng)頁(yè)啊!

瀏覽器訪問(wèn)ip地址時(shí),即向這個(gè)ip發(fā)送了get請(qǐng)求,等待返回網(wǎng)頁(yè)數(shù)據(jù),那么我們的bottle庫(kù)里,封裝了get方法,用來(lái)實(shí)現(xiàn)這一過(guò)程。

代碼如下:

不知道大家是否認(rèn)識(shí)def上面的@符號(hào),這個(gè)符號(hào)是python語(yǔ)法中的裝飾器的意思,可以簡(jiǎn)單的理解為使用get函數(shù)對(duì)homepage進(jìn)行修飾。在這里,@get(‘/’)即將homepage裝飾成了瀏覽器發(fā)送GET 127.0.0.1/這個(gè)請(qǐng)求時(shí)的相應(yīng)函數(shù)。可以做任意處理,最后返回get請(qǐng)求的相應(yīng)。這里就返回了簡(jiǎn)單的HelloWorld頁(yè)面,再次運(yùn)行,就有這樣的效果:

也可以使用bottle中封裝的template方法,將網(wǎng)頁(yè)數(shù)據(jù)單獨(dú)寫在.tpl文件中,示例如下:

run函數(shù)還有一個(gè)參數(shù)reloader,將其設(shè)置為True將會(huì)打開自動(dòng)重載,網(wǎng)頁(yè)服務(wù)器會(huì)在你做出任何更改時(shí)自動(dòng)重載服務(wù)器,可實(shí)現(xiàn)網(wǎng)站的熱更新。

3. 動(dòng)態(tài)路由及文件下載

如上我們使用的get(‘/’),本質(zhì)上是一種靜態(tài)路由,在服務(wù)器運(yùn)行前就確定好的地址可以用這種方法來(lái)進(jìn)行路由。

那么如果是服務(wù)器運(yùn)行時(shí)呢?比如說(shuō)網(wǎng)站服務(wù)器上存取文件,當(dāng)然不能采取靜態(tài)的方式,這時(shí)候我們就可以采用動(dòng)態(tài)路由。

Bottle的動(dòng)態(tài)路由,由route方法實(shí)現(xiàn),和get類似,也是采用裝飾器來(lái)修飾函數(shù)實(shí)現(xiàn)路由功能。

這里我們看到在裝飾器的參量中出現(xiàn)了一個(gè)與眾不同的東西:'name'。被其修飾的函數(shù)的參數(shù)與冒號(hào)后的參量同名,而在函數(shù)中,就可以使用name這個(gè)參數(shù)作為處理變量,最后返回響應(yīng)即可。

而動(dòng)態(tài)路由即可為文件路由提供便利。一個(gè)服務(wù)器中可能存放著成百上千的文件,不可能每個(gè)都依靠靜態(tài)地址。

這里我們可以看到一個(gè)新的函數(shù)static_file,第一個(gè)參數(shù)為文件名,第二個(gè)參數(shù)為根目錄地址(即這個(gè)文件所在的位置),當(dāng)前文件系統(tǒng)為:

--HelloWorld.py

--store1.txt

訪問(wèn)瀏覽器得到

當(dāng)然你也可以把文件放在文件夾里,只要把root參數(shù)更換成文件夾的地址即可。

4. POST的響應(yīng)與文件上傳

如果要實(shí)現(xiàn)更復(fù)雜的功能,我們不但需要使用GET方法,也需要POST方法。這里我們使用HTML語(yǔ)言中的Form來(lái)演示Bottle庫(kù)對(duì)于POST請(qǐng)求的響應(yīng)。

首先我們實(shí)現(xiàn)一個(gè)上傳文件的窗口,如上。

此處的頁(yè)面為一個(gè)簡(jiǎn)單的表單提交界面,在此不做詳細(xì)介紹,打開頁(yè)面如下:

接下來(lái)的POST響應(yīng),代碼如下:

從Bottle庫(kù)中導(dǎo)入post方法和request。

和get方法類似,使用post裝飾響應(yīng)函數(shù),之后在函數(shù)體中使用request即可獲取網(wǎng)站服務(wù)器接受到的post請(qǐng)求體。request.forms.get()方法可以將表單中對(duì)應(yīng)Key的字符串取出,request.files.get()方法可以將表單中對(duì)應(yīng)Key的文件取出,使用save方法將數(shù)據(jù)儲(chǔ)存就實(shí)現(xiàn)了文件的上傳。

接下來(lái)我們進(jìn)行一次測(cè)試:

點(diǎn)擊上傳后,我們打開服務(wù)器根目錄(就是python文件的位置),查看發(fā)現(xiàn)文件已經(jīng)上傳成功!

5. 小結(jié)

在完成這些功能后,你一定想把bottle部署到網(wǎng)絡(luò)上吧,畢竟只在本地運(yùn)行的話,網(wǎng)站又有什么作用呢?

清華網(wǎng)為我們每一個(gè)網(wǎng)絡(luò)接入點(diǎn)都提供了公網(wǎng)ip,在cmd中使用ipconfig查看ip地址,將run中的運(yùn)行參數(shù)改為你的公網(wǎng)ip,然后在任何一臺(tái)設(shè)備的瀏覽器上(建議手機(jī),電腦瀏覽器有時(shí)候會(huì)很慢)輸入ip地址和端口號(hào)(默認(rèn)80),就可以訪問(wèn)啦!

Bottle庫(kù)還有很多強(qiáng)大的功能,Cookie的讀寫、插件的安裝卸載與禁用都不在話下,也可以將Bottle部署到其他的服務(wù)器,非常簡(jiǎn)單的實(shí)現(xiàn)多線程,這些功能有待讀者大大發(fā)掘哦!

責(zé)任編輯:龐桂玉 來(lái)源: Python程序員
相關(guān)推薦

2023-06-13 13:38:00

FlaskPython

2021-10-27 11:29:32

框架Web開發(fā)

2023-06-27 16:42:18

Tinygrad深度學(xué)習(xí)工具

2017-11-09 17:17:36

KotlinJavaWeb

2023-11-24 11:11:08

Python數(shù)據(jù)庫(kù)

2020-11-11 12:13:59

JS

2010-07-07 09:30:41

WebMatrixWeb開發(fā)

2021-06-26 10:03:35

Python框架Flask

2021-07-01 09:08:03

Python網(wǎng)頁(yè)開發(fā)Flask

2019-03-10 20:55:11

瀏覽器Midori開源

2011-03-02 10:03:44

SaturnJSJS

2022-02-12 21:05:11

異步爬蟲框架

2013-06-20 10:28:39

MVVM框架avalon架構(gòu)

2011-09-08 10:42:38

Web服務(wù)器Nginx

2021-03-02 09:35:33

Python循環(huán)開發(fā)

2012-05-21 21:34:51

iOS

2022-07-15 16:39:19

PythonWhoosh工具

2014-04-21 10:01:45

前后端分離

2010-07-02 10:14:36

2009-07-14 18:05:28

輕量級(jí)Swing組件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人在线中文 | 91夜夜夜 | 天天夜碰日日摸日日澡 | 欧美中文在线 | 成人午夜视频在线观看 | av中文在线观看 | 欧洲成人免费视频 | 91久久精品国产免费一区 | 精品国产欧美一区二区 | 精品国产一区二区三区久久久蜜月 | 中文字幕av网站 | 国产精品精品久久久 | 一区二区高清 | 黑人性hd | 99视频免费播放 | 午夜伊人 | 亚洲国产偷 | 精品网站999 | 91手机精品视频 | 国产91在线 | 欧美 | 黄色永久免费 | 日本一区高清 | 日日干天天操 | 日本一区二区不卡视频 | 国产一区不卡在线观看 | 国产999精品久久久久久绿帽 | 日本a v在线播放 | 天天久久 | 91精品久久久久久久久中文字幕 | 91观看| 免费在线观看一区二区三区 | 国产91九色| 在线日韩| 日本欧美大片 | 色综合久久久 | 久久精品色欧美aⅴ一区二区 | 日韩中文字幕 | 噜啊噜在线 | 黄网站涩免费蜜桃网站 | 狠狠的操 | 国产精品久久久久久久久久久免费看 |