flask之url_for()函數解析

官方文檔

1.url_for()作用:

(1)給指定的函數構造 URL。
(2)訪問靜態文件(CSS / JavaScript 等)。 只要在你的包中或是模塊的所在目錄中創建一個名爲 static 的文件夾,在應用中使用 /static 即可訪問。

1.1給指定的函數構造 URL:

它接受函數名作爲第一個參數,也接受 URL 規則中對應的變量作爲參數。未知變量部分會添加到 URL 末尾作爲查詢參數。

from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
 
@app.route('/login')
def login(): pass
 
@app.route('/user/<username>')
def profile(username): pass
 
with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
 
#將未知變量next添加到 URL 末尾作爲查詢參數
print(url_for('login', next='/'))
 
# 將 URL 規則中對應的變量 username 作爲參數
print(url_for('profile', username='John Doe'))

output: 
/
/login
/login?next=/
/user/John%20Doe

1.2訪問靜態文件

url_for('static', filename='style.css')
這個文件應該存儲在文件系統上的 static/style.css 。


2.選擇構建URL而不直接在代碼中拼URL的原因:

  1.  反向構建通常比硬編碼的描述性更好。更重要的是,它允許你一次性修改 URL, 而不是到處邊找邊改。
  2. URL 構建會轉義特殊字符和 Unicode 數據,免去你很多麻煩。
  3. 如果你的應用不位於 URL 的根路徑(比如,在 /myapplication 下,而不是 / ), url_for() 會妥善處理這個問題。

3.url_for()構建url原理:

url_for() 使用endpoint ,通過反向機制構建URL路徑 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章