Flask 變量規(guī)則

2021-08-10 11:30 更新

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

@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 ,但是接受浮點數(shù)
path 和默認(rèn)的相似,但也接受斜線

唯一 URL / 重定向行為

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號