python
flask
在討論Python Flask實作_基礎_01_建立第一個app與Python Flask實作_基礎_02_透過url傳值之後,我們已經有了flask中關於路由的簡單概念,這次我們要討論flask中url_for
的功能,以及它跟route的關聯。
我們現在明白,透過裝飾器@app.route()
可以定義路由,使用者可以利用該路由來訪問網頁。
現在有一個問題在於如果今天程式都寫死路由,一但路由有所變更,那就必需對所有的專案開始搜尋,然後一起修正路由,對吧!
所以在flask有個方式可以避免這個問題,就是透過url_for
,這是flask內建的函數,可以從flask直接導入
我們加入兩個路由測試,如下:
我們定義了@app.route('/a')
所裝飾的function名稱為url_for_a
,然後在@app.route('/b')
的部份,將@app.route('/a')
所裝飾的functionurl_for_a
當做url_for的參數,接著執行這個專案,測試如下:
這是@app.route('/a')
這是@app.route('/b')
我們會發現到@app.route('/b')
所回傳的值是另一個路由/a
,透過url_for
可以讓flask反過來從被裝飾的function去找出相對應的路由。
所以在return的部份只要透過redirect
搭配url_for
,就可以將使用者引導到另一個路由去。那就可以避免掉調整路由之後整個專案都要去調整的問題了!
redirect
是一個重新導向的函數,從名稱不難理解它的功能,因此沒有多做說明,url_for
非常實用,專案之中必然用到,它的概念不止如此,還有endpoint
的觀念需要理解,但不急,實作之中我們會有更詳細的說明,不管如何,我們已經知道在專案內要避免直接寫死路由,而是利用redirect
搭配url_for
來避免因路由調整而必需整個專案大改的冏境。