1. 程式人生 > >Flask的一二三

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為固定值而非變數,否則做表單驗證時會比較不方便。