Flask變量規則

可以通過將可變部分添加到規則參數來動態構建URL。 這個變量部分被標記爲<variable-name>。 它作爲關鍵字參數傳遞給規則所關聯的函數。

在以下示例中,route()裝飾器的規則參數包含附加到URL /hello<name>變量部分。 因此,如果在瀏覽器中輸入URL: http://localhost:5000/hello/YiibaiYiibai,那麼 ‘YiibaiYiibai’ 將作爲參數提供給hello()函數。

參考如下代碼 -

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
    return 'Hello %s!' % name

if __name__ == '__main__':
    app.run(debug = True)

將上面的腳本保存到文件:hello.py,並從Python shell運行它。
Flask變量規則

接下來,打開瀏覽器並輸入URL => http://localhost:5000/hello/YiibaiYiibai。在瀏覽器中輸出如下所示 -
Flask變量規則

除了默認的字符串變量部分之外,還可以使用以下轉換器構造規則 -

編號

轉換器

描述

1

int

接受整數

2

float

對於浮點值

3

path

接受用作目錄分隔符的斜槓符(/)

在下面的代碼中,使用了所有這些構造函數。

from flask import Flask
app = Flask(__name__)

@app.route('/blog/<int:postID>')
def show_blog(postID):
    return 'Blog Number %d' % postID

@app.route('/rev/<float:revNo>')
def revision(revNo):
    return 'Revision Number %f' % revNo

if __name__ == '__main__':
    app.run()

從Python Shell運行上述代碼。 在瀏覽器中訪問URL => http:// localhost:5000/blog/11

給定的數字值作爲:show_blog()函數的參數。 瀏覽器顯示以下輸出 -

Blog Number 11

在瀏覽器中輸入此URL - http://localhost:5000/rev/1.1

revision()函數將浮點數作爲參數。 以下結果出現在瀏覽器窗口中 -

Revision Number 1.100000

Flask的URL規則基於Werkzeug的路由模塊。 這確保了形成的URL是唯一的,並且基於Apache制定的先例。

考慮以下腳本中定義的規則 -

from flask import Flask
app = Flask(__name__)

@app.route('/flask')
def hello_flask():
    return 'Hello Flask'

@app.route('/python/')
def hello_python():
    return 'Hello Python'

if __name__ == '__main__':
    app.run()

兩條規則看起來都很相似,但在第二條規則中,使用了尾部斜線(/)。 因此,它變成了一個規範的URL。 因此,使用/python/python/返回相同的輸出。 但是,在第一條規則的情況下, URL:/flask/會導致404 Not Found頁面。