路由是将URL直接映射到建立網頁的代碼的機制。它有助于更好地管理網頁的結構,并顯着提高網站的性能,并且進一步的增強或修改将變得非常簡單。在python中,路由是在大多數網絡架構中實作的。我們将在本章中看到flask Web架構中的示例。
Flask路由
Flask中的route()裝飾器用于将URL綁定到函數。當在浏覽器中通路對應URL時,将執行該函數以給出結果。此處,URL => /hello規則綁定到hello_world()函數。如果使用者通路URL => http://localhost:5000/ ,則hello_world()函數的輸出将在浏覽器中顯示。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello Yiibai'
if __name__ == '__main__':
app.run()
當運作上面的程式時,得到以下輸出-
* Serving Flask app "flask_route" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [06/Aug/2019 09:48:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [06/Aug/2019 09:48:46] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [06/Aug/2019 09:48:46] "GET /favicon.ico HTTP/1.1" 404 -
打開浏覽器并指向URL=> http://localhost:5000/以檢視函數執行的結果。
2. 使用URL變量
我們可以使用路由傳遞URL變量以動态建構URL。使用url_for()函數,該函數将函數名稱作為第一個參數,并将其餘參數作為URL規則的可變部分。
在下面的示例中,我們将函數名稱作為參數傳遞給url_for()函數,并在執行這些行時列印出結果。
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/')
def profile(username): pass
with app.test_request_context():
print url_for('index')
print url_for('index', _external=True)
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='fit su')
當我們運作上面的程式時,得到以下輸出-
/
http://localhost/
/login
/login?next=%2F
/user/fit%20su
3. 重定向
可以使用重定向功能通過路由将使用者重定向到另一個URL。提到了新的URL作為函數的傳回值,該函數應該重定向使用者。當我們在修改網頁的一些問題時,将使用者暫時轉移到其他頁面時,這很有用。
from flask import Flask, abort, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
# this_is_never_executed()
執行以上代碼後,基本URL會轉到使用中止功能的登入頁面,是以永遠不會執行登入頁面的代碼。
¥ 我要打賞
糾錯/補充
收藏
加QQ群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。