下面講一個非常重要的功能
url_for函數
其實,在路由內部,url的連結並不是直接存取到響應的頁面的
如下圖,他是分為2個頁面來進行的
首先通過url連結到endpoint,再通過endpoint來連結試圖函數
而這個endpoint一般就是路由函數的名字
需要提一點的是,在建立應用執行個體的時候,他就會自動預設產生一個url靜態路由目錄,就是指向靜態檔案的檔案夾static。
| url rule | endpoint | view_function |<--------------對應關係-------------->| /static | static | Flask.send_static_file
當然,如果你的靜態檔案不是放在static中,你可以自訂路徑來訪問他
下面的樣本中,將應用下的assets檔案夾註冊為靜態目錄/assets:
app = Flask(name,static_folder='assets',static_url_path='/assets') 當應用運行後,通過URL/assets/main.css就可以訪問assets檔案夾下的 main.css檔案了。
這時候他們的url_map和view_function關係就變成了:
| url | endpoint | view_function |<-------------------對應關係------------------>| /assets | static | Flask.send_static_file |
url_for() 函數最簡單的用法是以視圖函數名(或者app.add_url_route() 定義路由時使用
的端點名)作為參數,返回對應的URL。例如,在目前的版本的hello.py 程式中調用url_
for('index') 得到的結果是/。調用url_for('index', _external=True) 返回的則是絕對地
址,在這個樣本中是http://localhost:5000/。
使用url_for() 產生動態地址時, 將動態部分作為關鍵字參數傳入。例如,url_for
('user', name='john', _external=True) 的返回結果是http://localhost:5000/user/john。
傳入url_for() 的關鍵字參數不僅限於動態路由中的參數。函數能將任何額外參數添加到
查詢字串中。例如,url_for('index', page=2) 的返回結果是/?page=2。