Flask 構(gòu)造 URL

2021-08-10 11:30 更新

如果 Flask 能匹配 URL,那么 Flask 可以生成它們嗎?當(dāng)然可以。你可以用 url_for() 來給指定的函數(shù)構(gòu)造 URL。它接受函數(shù)名作為第一個(gè) 參數(shù),也接受對應(yīng) URL 規(guī)則的變量部分的命名參數(shù)。未知變量部分會添加到 URL 末尾作為查詢參數(shù)。這里有一些例子:

>>> 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')
...  print url_for('login', next='/')
...  print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe

(這里也用到了 test_request_context() 方法,下面會 解釋。即使我們正在通過 Python 的 shell 進(jìn)行交互,它依然會告訴 Flask 要 表現(xiàn)為正在處理一個(gè)請求。請看下面的解釋。 環(huán)境局部變量

為什么你要構(gòu)建 URL 而非在模板中硬編碼?這里有三個(gè)絕妙的理由:

  1. 反向構(gòu)建通常比硬編碼的描述性更好。更重要的是,它允許你一次性修改 URL, 而不是到處邊找邊改。
  2. URL 構(gòu)建會轉(zhuǎn)義特殊字符和 Unicode 數(shù)據(jù),免去你很多麻煩。
  3. 如果你的應(yīng)用不位于 URL 的根路徑(比如,在 /myapplication 下,而不 是 / ), url_for() 會妥善處理這個(gè)問題。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號