Python路由

路由是將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 zaixian'

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會轉到使用中止功能的登錄頁面,因此永遠不會執行登錄頁面的代碼。


上一篇: Python DNS查找 下一篇: Python HTTP請求