Flask 中的路由與反向路由

NO IMAGE

路由

裝飾器 @app.route() 告訴 Flask 哪個 URL 才能觸發我們的函式。這也就是路由.

之後 ,定義一個函式,該函式名也是用來給特定函式生成 URLs,並且返回我們想要顯示在使用者瀏覽器上的資訊。

from flask import Flask,request,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/user', methods=['GET'])
def hello_user():
return 'hello user'

路由的本質

路由的本質,是URL 繫結, @app.route() 裝飾器用於把一個函式綁於一個URL上,如上,/繫結了hello_world()函式,/user繫結了hello_user()函式

路由變數規則

給 URL 增加變數的部分,把一些特定的欄位標記成 。這些特定的欄位將作為引數傳入到你的函式中。當然也可以指定一個可選的轉換器通過規則 。

@app.route('/users/<id>',methods=['GET'])
def user_id(id):
'''
請求地址為http://127.0.0.1:5000/users/123
http://127.0.0.1:5000/users/weixuan
'''
return 'hello user:' id

引數形式的url

@app.route('/query_user')
def query_user():
'''
http://127.0.0.1:5000/query_user?id=123
'''
id = request.args.get('id')
return 'query user:' id

反向路由

本質是根據函式名反向生成url,使用函式 url_for() 來針對一個特定的函式構建一個 URL。它能夠接受函式名作為第一引數,以及一些關鍵字引數, 每一個關鍵字引數對應於 URL 規則的變數部分。未知變數部分被插入到 URL 中作為查詢引數。

# -*- coding: utf-8 -*-
from flask import Flask,request,url_for
@app.route('/test')
def query_user():
'''
http://127.0.0.1:5000/test?id=123
'''
id = request.args.get('id')
return 'query user:' id
@app.route('/query_url')
def query_url():
'''
反匯出 query_user函式名對應的url地址
'''
return 'query url:' url_for('query_user')

請求地址http://127.0.0.1:5000/query_url,之後,列印的是
query url:/test