Flask 變量規(guī)則

2021-08-10 11:30 更新

要給 URL 添加變量部分,你可以把這些特殊的字段標(biāo)記為 <variable_name> , 這個(gè)部分將會(huì)作為命名參數(shù)傳遞到你的函數(shù)。規(guī)則可以用 <converter:variable_name> 指定一個(gè)可選的轉(zhuǎn)換器。這里有一些不錯(cuò)的例子:

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

轉(zhuǎn)換器有下面幾種:

int 接受整數(shù)
float int ,但是接受浮點(diǎn)數(shù)
path 和默認(rèn)的相似,但也接受斜線

唯一 URL / 重定向行為

Flask 的 URL 規(guī)則基于 Werkzeug 的路由模塊。這個(gè)模塊背后的思想是基 于 Apache 以及更早的 HTTP 服務(wù)器主張的先例,保證優(yōu)雅且唯一的 URL。

以這兩個(gè)規(guī)則為例:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

雖然它們看起來(lái)著實(shí)相似,但它們結(jié)尾斜線的使用在 URL 定義 中不同。 第一種情況中,指向 projects 的規(guī)范 URL 尾端有一個(gè)斜線。這種感覺(jué) 很像在文件系統(tǒng)中的文件夾。訪問(wèn)一個(gè)結(jié)尾不帶斜線的 URL 會(huì)被 Flask 重定向到帶斜線的規(guī)范 URL 去。

然而,第二種情況的 URL 結(jié)尾不帶斜線,類(lèi)似 UNIX-like 系統(tǒng)下的文件的 路徑名。訪問(wèn)結(jié)尾帶斜線的 URL 會(huì)產(chǎn)生一個(gè) 404 “Not Found” 錯(cuò)誤。

這個(gè)行為使得在遺忘尾斜線時(shí),允許關(guān)聯(lián)的 URL 接任工作,與 Apache 和其它的服務(wù)器的行為并無(wú)二異。此外,也保證了 URL 的唯一,有助于 避免搜索引擎索引同一個(gè)頁(yè)面兩次。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)