Last Updated on 2021-06-06 by Clay
系列文章
介紹
Route,時常被譯為『路由』,在 Flask 當中便是我們用於註冊網址的函式。
我在前一篇心得筆記當中有紀錄如下的程式碼:
# -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return "Hello World!" if __name__ == '__main__': app.run()
其中,"@app.route('/')" 便是我們註冊的網址,網址直接就是我們寫好程式的『根目錄』—— 符號 "/"。
今天要來紀錄的,便是這個 route 的一些配置方法,包含註冊不同的網址、使用變數輸入、無效的網址、自動重定向的網址......等等。
Route 註冊不同網址
# -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Index Page' @app.route('/test') def test(): return 'Test Page' if __name__ == '__main__': app.run(host='127.0.0.1', port=8000)
Output:
可以看到,我註冊了兩個不同的網址,而在瀏覽器上更改成對應的網址,便會顯示出對應的文字。
這是 Route 常見的用法:註冊不同的網址。
在網址中輸入參數
在使用 Route 註冊網址的時候,我們可以將其設定為可接受網址中的參數。這樣的講解我認為不太好懂,直接看下範例可能比較明白。
# -*- coding: utf-8 -*- from flask import Flask from markupsafe import escape app = Flask(__name__) @app.route('/') def index(): return 'Index Page' @app.route('/<int:userID>') def hello(userID): return 'The user ID is: {}'.format(escape(userID)) if __name__ == '__main__': app.run(host='127.0.0.1', port=8000)
Output:
在這次的範例程式碼當中,我輸入了一個叫 userID 的變數,並指定只能輸入 "int" 的整數型態。所以我們可以很明顯的看到,在我輸入 "123456" 的時候頁面很正常地返回了 "The user ID is: 123456" —— 但是在我輸入 "Clay" 的時候卻抱了錯。
這都是因為我限定了可輸入變數的資料型態之故。
可以輸入的資料型態有以下幾種:
string | 可以接受字串、不接受 "/" |
int | 接受正整數 |
float | 接受正浮點數 |
path | 可以接受字串以及 "/" |
uuid | 可以接受 UUID |
無效、自動重定向網址
接下來紀錄的可能是比較沒有用處的資料,僅僅只是一個簡單的常識。
@app.route('/test01/') def test01(): return 'test01' @app.route('/test02') def test02(): return 'test02'
如果今天我們註冊的網址分別為上方的兩種,那麼在 test01 當中,最後一個 "/" 其實是等於沒有的,輸入時網址會被重定向為 "/test"。
而 test02 則是一個正常的網址,但若今天我們在這個網址的最後頭加入 "/",那麼便會發生錯誤,因為找不到這個網址。