flask 獲取GET和POST請求引數(全)

2021-10-08 11:44:42 字數 3536 閱讀 6618

近日,在使用flask框架獲取前端的請求時獲取引數時,遇到了幾個問題;之前的專案也有使用這部分,當時程式沒有問題就沒再深究,直到遇到了問題。果然,遇到問題才會成長!^_^

因此,對getpost兩種請求方式的引數獲取方式進行梳理。

request物件是從客戶端向伺服器發出請求,包括使用者提交的資訊以及客戶端的一些資訊。客戶端可通過html表單或在網頁位址後面提供引數的方法提交資料,然後通過request物件的相關方法來獲取這些資料。

request請求總體分為兩類:

get請求

get把引數包含在url中,訪問時會在位址列直接顯示引數不安全,且引數大小比較小

post請求

引數通過request body傳遞

在最初使用時,上網一搜,得到的結果大致如下:

flask獲取引數方式:

request.form.get(

"key"

,type

=str

, default=

none

)# 獲取表單資料

request.args.get(

"key"

)# 獲取get請求引數

request.values.get(

"key"

)# 獲取所有引數

上述是三種方式,可以滿足基本的使用,但是並不是萬能的!

當採用get請求方式時,引數直接顯示在請求連線中,可以使用兩種獲取引數的方式:

route裝飾器語句中,通過methods指定請求方式,如下:

"/", methods=

["get"])

獲取引數

if request.method ==

"get"

: comment = request.args.get(

"content"

) comment = request.values.get(

"content"

)

客戶端在傳送post請求時,資料可以使用不同的content-type來傳送。

比如:在postman軟體中,可以方便的檢視引數是以什麼形式傳送的,對應的content-type是什麼。

body中選擇「form-data」, 則對應的headers中的「content-type」「multipart/form-data」,引數形式是key-value。

具體位置如下圖:

]# 或者

request.json.get(

'centent'

)獲取的是序列化後的引數,一般情況下滿足使用,不需要json.loads()來序列化。

列印出結果就是json串,如

request.get_data(

)

request.get_data()獲取的原始引數,接受的是type是'bytes』的物件,如:b

request.values.get(

'key'

)

content-typemultipart/form-data,獲取表單引數可以使用request.form.get('content')或者request.form['content']來獲取引數

request.form.get(

'key'

)# 或者

request.form[

'key'

]

if request.method ==

"post"

:if request.content_type.startswith():

# comment = request.get_json()["content"]

comment = request.json.get(

'content'

)elif request.content_type.startswith(

'multipart/form-data'):

comment = request.form.get(

'content'

)else

: comment = request.values.get(

"content"

)

"/"

, methods=

["get"

,"post"])

defprocess()

:if request.method ==

"get"

: comment = request.args.get(

"content"

)# comment = request.values.get("content")

if request.method ==

"post"

:if request.content_type.startswith():

# comment = request.get_json()["content"]

comment = request.json.get(

'content'

)elif request.content_type.startswith(

'multipart/form-data'):

comment = request.form.get(

'content'

)else

: comment = request.values.get(

"content"

) logger.debug(

'%s'

%comment)

Flask中post和get的區別

原理 post和get都是與伺服器互動的方法,還有put和delete。從http標準看來get,post,put,delete對應的就是對這個資源的查,改,增,刪四個操作,因此我們可以理解為get一般是用來獲取 查詢伺服器資源資訊,post一般是用於更新伺服器資源資訊。即get是向伺服器傳送取資料...

node獲取get引數和post引數

引入包url,使用url.parse 對url位址進行解析,返回乙個物件,就是get引數.let url.parse req.url,true 表單部分 js部分 使用cmd進入目錄後開啟看看node 4 url包獲取get引數.js 引入包const querystring require que...

express獲取表單get和post請求的 資料

get請求的引數在url中,在原生node中,需要使用url模組來識別引數字串。在express中,不需要使用url模組了。可以直接使用req.方法來直接獲取。let comm req.query console.log comm console.log req.host console.log r...