最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

【二】Flask 中的路由

2020-03-13 14:14 作者:熱心的裴同學(xué)  | 我要投稿

保留傳統(tǒng),先插入封面

????前情回顧

上次我們著手寫了第一個(gè)flask的應(yīng)用.運(yùn)行它之后當(dāng)我們訪問http://127.0.0.1:5000/時(shí)就會(huì)出現(xiàn)我們對應(yīng)的信息


這個(gè)地址后面所帶的路徑是/也就是我們的跟路徑,但是在我們的平時(shí)上網(wǎng)時(shí)所看到的絕大多數(shù)站點(diǎn)都是由許許多多的頁面所組成.

比如bilibili的視頻播放頁面和專欄的頁面就是兩個(gè)獨(dú)立的路徑

這個(gè)地址后面所帶的路徑是/也就是我們的跟路徑,但是在我們的平時(shí)上網(wǎng)時(shí)所看到的絕大多數(shù)站點(diǎn)都是由許許多多的頁面所組成.

比如bilibili的視頻播放頁面和專欄的頁面就是兩個(gè)獨(dú)立的路徑

假如說我們現(xiàn)在有一個(gè)網(wǎng)站,它非常簡單由首頁和用戶頁面來構(gòu)成

我們改如何實(shí)現(xiàn)它呢?

簡單路由

我們回過頭來看我們的helloword程序是怎么樣來實(shí)現(xiàn)一個(gè)頁面的

@app.route("/")

def hello_world()

: ? ?return "hello"


首先第一行是app.route("/")裝飾器,這也是我們一個(gè)頁面的核心

route是路由的意思,加入我們想讓http://127.0.0.1:5000/hello可以被訪問到,我們只需要把/改成/hello即可

@app.route("/hello")

def hello_world():

? ? return "hello"

?

這時(shí)候我們再去訪問/的話就訪問不到了

但是hello確實(shí)可以訪問到的

@app.route("/hello")中

app.route()的意思就是為下面的函數(shù)來注冊一個(gè)URL可以來執(zhí)行這個(gè)函數(shù)地下的內(nèi)容,這個(gè)函數(shù)被稱為視圖函數(shù),這個(gè)函數(shù)的返回值就是我們在頁面上看到的結(jié)果

Q:能不能實(shí)現(xiàn)一個(gè)視圖函數(shù)綁定多個(gè)url?

A:是可以的

嘗試一下

回到上面舉的"栗子",有一個(gè)頁面有主頁用戶頁面來構(gòu)成

我們應(yīng)該怎么來實(shí)現(xiàn)呢?

首先來注冊主頁


@app.route("/index")

def index():

? ? return "這里是主頁"


然后下面就是有幾個(gè)頁面就寫幾個(gè)這樣的視圖函數(shù)了



@app.route("/user")

def user():

? ? return "這里是用戶頁面"

來訪問一下試試(記得重啟服務(wù)器)


可能你會(huì)說,哪有主頁不是一點(diǎn)就進(jìn)去的呢?

我想訪問'/'也能訪問到主頁應(yīng)該怎么做呢.這就要用到一個(gè)視圖函數(shù)綁定多個(gè)URL的方式了

直接在視圖函數(shù)上面寫裝飾器即可


@app.route("/")

@app.route("/index")

def index():

? ? return "這里是主頁"

這樣訪問的時(shí)候就不需要輸入/index


攜帶參數(shù)

你也許發(fā)現(xiàn)了,在剛剛的bilibili頁面中視頻播放頁面的url后面帶了av號作為參數(shù)

這樣我們的應(yīng)用才知道用戶想要播放哪個(gè)視頻節(jié)目

同樣的,這就要用到了路由參數(shù)的功能,畢竟我們不能把每個(gè)用戶都寫一個(gè)視圖函數(shù)吧

比如說下面這個(gè)函數(shù)就會(huì)根據(jù)不同用戶傳入的用戶名來將用戶名返回到頁面上


@app.route("/user/<username>")

def me(username):

? ? return "歡迎" + username + "蒞臨指導(dǎo)!"


你也可以一下子傳入多個(gè)值,但是你得把他們表示清楚


@app.route("/user/<username>/<msg>")

def me(username, msg):

? ? return username+"說:" + msg

參數(shù)中間的/是必須的,因?yàn)槿绻麤]有兩個(gè)字符串就會(huì)當(dāng)做一個(gè)來看,服務(wù)器永遠(yuǎn)不會(huì)找得到你這個(gè)頁面


獲取到的參數(shù)也可以在代碼中直接使用,因?yàn)樗且押瘮?shù)的形式變量的方式傳入的

比如:

@app.route("/user/<username>/<msg>")

def me(username, msg):

? ? print("%s說:%s" % (username, msg))

? ? return username+"說:" + msg

規(guī)定參數(shù)的類型:

默認(rèn)情況下,這里的參數(shù)以字符串的方式進(jìn)行讀取,也就是說你可以在這里傳入任何字符串

Q:那我能不能只規(guī)定數(shù)字能被讀取

A:當(dāng)然是可以的

你可以使用<類型:變量>這樣的方式進(jìn)行規(guī)定


@app.route("/user/<int:usernum>")

def user(usernum):

? ? print(type(usernum))

? ? return "編號: " + str(usernum)

可以在控制臺看到類型是int


這些規(guī)定都是由flask自己已經(jīng)定義好的一些標(biāo)識符,但是你也可以自己通過正則表達(dá)式來定義一個(gè)屬于自己的格式路由,相關(guān)的內(nèi)容可以自行百度解決

最后一點(diǎn)

也許你也正在遭受每次修改代碼都要重啟服務(wù)器的苦惱,那就來試試Flask的debug模式吧,打開debug之后當(dāng)你保存文件后flask會(huì)自動(dòng)重啟

當(dāng)你在視圖函數(shù)遇到錯(cuò)誤的時(shí)候常??吹降氖沁@樣的錯(cuò)誤信息

比如說這是因?yàn)闆]有類型轉(zhuǎn)換而造成的無法將int與str進(jìn)行連接的錯(cuò)誤


@app.route("/user/<int:usernum>")

def user(usernum):

? ? print(type(usernum))

? ? return "編號: " + usernum # 錯(cuò)誤在這里 應(yīng)該改為str(usernum)

這時(shí)服務(wù)器將會(huì)返回一個(gè)500錯(cuò)誤


開啟debug模式后


將會(huì)直接出現(xiàn)錯(cuò)誤信息

如何開啟這個(gè)DEBUG?

1 app.run()中直接傳入

if __name__ == '__main__':

? ? app.run(debug=True)

2 在app.config中設(shè)置


app.config是一個(gè)全局的app配置信息,他是一個(gè)字典,我們以后將會(huì)經(jīng)常用到它的

from flask import Flask


app = Flask(__name__)


app.config["DEBUG"] = True

3 命令行中使用debugger

需要設(shè)置如下環(huán)境變量

FLASK_ENV=development

小結(jié)一下

這一次我們主要是演示了怎么樣在flask中注冊不同的頁面以及如何使用路由傳遞參數(shù).

今天第二項(xiàng)內(nèi)容就是我們演示了怎么樣在flask啟動(dòng)調(diào)試模式

這些內(nèi)容都非常簡單,如果你想快速入門flask我建議你去閱讀一本叫做《Flask Web 入門開發(fā)實(shí)戰(zhàn)》(這不是廣告)


下一節(jié)我們來一起看看怎么樣展示出一個(gè)漂亮的網(wǎng)頁


(三連,三連,三連)

下次見



【二】Flask 中的路由的評論 (共 條)

分享到微博請遵守國家法律
封丘县| 九江县| 黔西县| 玉屏| 西平县| 海南省| 突泉县| 北宁市| 中江县| 合川市| 广东省| 沅江市| 宁津县| 界首市| 治县。| 莱州市| 平远县| 枣庄市| 博罗县| 高唐县| 江源县| 双流县| 麻城市| 萍乡市| 成武县| 宁晋县| 宁都县| 福鼎市| 胶州市| 兖州市| 荆州市| 滦南县| 芷江| 青河县| 聂拉木县| 汉川市| 大兴区| 加查县| 双城市| 承德市| 临潭县|