1. route的定義:
客戶端發送請求給web服務器,web服務器再將請求發送給Flask程序實例
程序實例需要知道每個url請求所對應的運行代碼是誰。所以程序中必須要創建一個 url 請求地址 到 python運行函數的一個映射。處理url和函數之間的關系的程序就是"路由"
2.路由的體現
在 Flask 中,路由是通過 @app.route 裝飾器來表示的
1.路由的基本表示
# http://localhost:5000/admin/login
@app.route('/admin/login')
def admin_login():
return 'xxx'
2.指定參數類型的路由以及傳參
# http://localhost:5000/show/zengsf/23
@app.route('/show/<name>/<int:age>')
def show(name,age):
//: name : 字符串
//: age : 整數
int: 類型轉換器
Flask 中所支持的類型轉換器:
類型轉換器 作用
缺省 字符串,不能有斜杠('/')
int: 整型
float: 浮點型
path: 字符串,可以有斜杠('/')
3.多 URL 的路由匹配
為多個訪問地址匹配同一個視圖處理函數
@app.route('/地址1')
@app.route('/地址2')
... ...
def index():
return ""
4.路由中設置 HTTP 請求方法
Flask路由也允許設置對應的請求方法(post/get),只有將匹配上請求方法的路徑才能交給對應的視圖處理函數取處理。所有的路由,默認只接受 get 請求
@app.route('/xxx/xxx',methods=['POST'])
def xxx:
# 該函數只能接受post請求
pass
@app.route('/xxx/xxx',methods=['GET','POST'])
def xxx:
# 該函數既能接受get請求也能接受post請求
pass
5.URL的反向解析
正向解析:程序自動解析,根據@app.route()中的訪問路徑,來匹配處理函數
反向解析:通過視圖處理函數的名稱自動生成對應的訪問路徑
在Flask中要實現反向解析的話需要使用 :
url_for(funName,args)
funName:要生成地址的函數名
args:該地址中需要的參數
函數:s = url_for(funName,arg1=value1,arg2=value2)