引數解析
flask的引數解析主要用request完成(from flask import request)。
request的api詳解見官方文件
request的使用詳解見官方文件
此處主要介紹一些常用的引數解析相關的內容。
request中的幾個重要變數:
request.data 字串型別 存放請求的字串資料,未經處理
request.files multidict型別 存放所有的上傳檔案列表
request.form immutablemultidict型別 存放表單資料
request.is_json 函式 判斷資料是否為json資料
request.is_multiprocess 函式 判斷此應用是否為多程序wsgi服務
request.is_multithread 函式 判斷此應用是否為多執行緒wsgi服務
request.json dict型別 存放json型別的資料
request.view_args dict型別 存放url中定義的變數 比如/login/,會存放
request.args immutablemultidict型別 存放url中?後面的變數
request.values combinedmultidict型別 是args和form的組合
拿常用的get、post、put、delete方法舉例。
get方法:
變數名不重複型:/login?username=cxp&password=cxp
username = request.args.get('username
', ''
)password = request.args.get('
password
', '')
變數名重複型:/login?username=cxp&password=cxp&password=cpp
params =dict()for i, j in
request.args.iterlists():
params[i] =j
print params #
request.data/request.form/request.json無資料,request.args和request.values存放資料。
post、put、detelte方法:
form-data型:/login
username = request.form.get('username
', ''
)password = request.form.get('
password
', '')
request.data/request.args/request.json都為空,僅request.form和request.values有資料。
json型:/login
args =request.json或者args = request.get_json()
request.args/request.form/request.values為空,request.data為裸資料,request.json有字典資料。
其實準確的說不應該用http方法來做分類。如果是url中直接帶引數的方式,介面中都可以用request.args變數去獲取引數。如果是form-data的型別,則可以用request.form變數去獲取引數。如果是json型別,則用request.json去獲取引數。另外因為flask可能會用wtforms來做表單驗證,建議介面中的key為固定值而非變數,否則做表單驗證時會比較不方便。
鉤子函式
before_request() 註冊乙個函式,在每個請求之前執行。通常用於資料庫的連線或者從session中獲取資訊等操作。
defbf_request():
g.string = '
before_request
'before_first_request() 註冊乙個函式,在處理第乙個請求之前執行。通用用於僅需執行一次的操作,而且需要第一次請求來觸發。
defbf_first_request():
g.string = '
before_first_request
'after_request() 註冊乙個函式,在每次請求之後執行。註冊的函式至少需要含有乙個引數,這個引數實際上為伺服器的響應,且函式中需要返回這個響應引數。
defaf_request(param):
return param
teardown_request() 註冊乙個函式,同樣在每次請求之後執行。註冊的函式至少需要含有乙個引數,這個引數實際上為伺服器的響應,且函式中需要返回這個響應引數。
deftd_request(param):
return param
Flask 請求鉤子
flask中具有四種鉤子被做成了修飾器,我們在後端可以進行呼叫做相關的操作.功能 defindex print 哈哈哈哈 return 哈哈哈 defbefore first request print 這是第乙個鉤子,只在第乙個請求之前呼叫,第乙個請求之後不再呼叫 效果 注意點 在每次請求的之前呼...
Flask 請求鉤子
首先了解下flask設計請求鉤子的作用是什麼,其實請求鉤子就是為了讓每個檢視函式避免編寫重複功能的 設施的功能。其實和scrapy,django中的中介軟體有點相似之處。請求鉤子的設計能夠很有效的提高 的質量,以及實現一些很好的應用場景。falsk有以下幾種鉤子 在處理第乙個請求前執行.應用場景 比...
Flask 請求鉤子
在django中有中介軟體這個類來做一些檢視執行前 執行中 執行後的一些額外業務處理,那麼在flask則是採用請求鉤子的方式來處理。在客戶端和伺服器互動的過程中,有些準備工作或掃尾工作需要處理,比如 在請求開始時,建立資料庫連線 在請求結束時,指定資料的互動格式。為了讓每個檢視函式避免編寫重複功能的...