Skip to content

[Flask] 學習心得筆記 (1): Route 的基本介紹

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 則是一個正常的網址,但若今天我們在這個網址的最後頭加入 "/",那麼便會發生錯誤,因為找不到這個網址。


References

Leave a Reply