Flask的一二三
轉載請註明出處 https://www.cnblogs.com/chenxianpao/p/9949279.html
引數解析
Flask的引數解析主要用Request完成(from flask import request)。
request的Api詳解見官方文件http://flask.pocoo.org/docs/1.0/api/#flask.Request。
request的使用詳解見官方文件http://flask.pocoo.org/docs/1.0/reqcontext/。
此處主要介紹一些常用的引數解析相關的內容。
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/<string: username>,會存放{"username": "xxx"}
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 # {'username': [u'cxp'], 'password': [u'cxp', u'cpp']}
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為固定值而非變數,否則做表單驗證時會比較不方便。