可以通過將可變部分新增到規則引數來動態構建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執行它。
接下來,開啟瀏覽器並輸入URL => http://localhost:5000/hello/YiibaiYiibai
。在瀏覽器中輸出如下所示 -
除了預設的字串變數部分之外,還可以使用以下轉換器構造規則 -
編號 | 轉換器 | 描述 |
---|---|---|
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
頁面。