flask學(xué)習(xí)筆記-獲取請求參數(shù)
視圖函數(shù)很可能要接收從前端傳來的參數(shù),并且還需要返回響應(yīng)體、狀態(tài)碼、響應(yīng)頭等信息
如何實(shí)現(xiàn)呢?
1)首先從前端獲取信息:
就是Flask中表示當(dāng)前請求的request對象,request對象中保存了一次HTTP請求的一切信息

re-quest.args 與 re-quest.form 的區(qū)別就是:
re-quest.args 是獲取 url 中的參數(shù)
re-quest.form 是獲取 form 表單中的參數(shù)
re-quest.val-ues 獲取 for-m-data 數(shù)據(jù)和 URL 中的數(shù)據(jù)(如果 url 和 form 中的 Key 重名的話,form 中的同名的 key 中 value 會被 url 中的 value 覆蓋)
re-quest.data 之 如果處理不了的就變成字符串兒存在 data 里面
re-quest.files 如果遇到文件上傳的話,re-quest.files 里面存在的是你上傳的文件,但是 flask 在這個(gè)文件的操作中加了一定的封裝,讓操作變得極為簡單
request中包含了前段發(fā)送過來的所有請求數(shù)據(jù)
通過request.form可以直接提取請求體中的表單格式的數(shù)據(jù),是一個(gè)類字典的對象
通過get方法只能拿到多個(gè)同名參數(shù)的第一個(gè)
1、示例從請求體獲取內(nèi)容:
通過用postman發(fā)送表單格式數(shù)據(jù),模擬前端。

發(fā)送一個(gè)表單數(shù)據(jù)后,前端Postman顯示出
這句,編譯器中顯示如下:
此時(shí),可以發(fā)現(xiàn),用表單發(fā)送的數(shù)據(jù),用request.data是接收不到的,數(shù)據(jù)存放在request.form中。
當(dāng)我們發(fā)送非表單數(shù)據(jù),如json格式數(shù)據(jù)時(shí)

此時(shí)postman返回?cái)?shù)據(jù)是none,說明非表單數(shù)據(jù)request.form是接收不到的, request.data可以接收
顯示如下:
可以看到數(shù)據(jù)不做任何處理,得到的是字節(jié)流,并沒有以字符串的形式打印出來,這時(shí),若想按字符串顯示,需要把數(shù)據(jù)按utf-8解碼。修改成下面這句:
此時(shí),結(jié)果按照字符串形式顯示,轉(zhuǎn)義字符也起到了效果:
2、 獲取查詢參數(shù)args
要獲取查詢字符串中的信息,則上述方式無法實(shí)現(xiàn)。
方式: 使用request中 args 下面的方法,修改程序如下:
將
修改為:
即可。
測試運(yùn)行:

運(yùn)行成功,取到查詢字符串中的參數(shù)。
3、表單中多個(gè)數(shù)據(jù)的獲取
在postman中,輸入多個(gè)name,用上述方式,只能取到一個(gè)值,如:

這種情況,想要獲取全部的name,則需要使用到 request.form.getlist,修改程序如下:
測試運(yùn)行:

用這種方式,無論輸入多少個(gè)同名人名,我們都可以正常捕獲。
4、獲取文件files
示例:
注意:前端發(fā)送文件名必須與后端接收的文件名一致!
測試:

本地也會出現(xiàn)demo1.png的圖片。
