flask 處理post方法遇到的乙個問題

2021-07-25 21:44:51 字數 865 閱讀 2259

最近通過flask編寫乙個web程式,在通過requests模組對restful介面進行測試時,遇到了乙個問題,在這裡記錄下。

通過requests進行post提交資料時,後台無法獲取到對應的引數。

tx = requests.post('***x',data=)
1.1 後台報400錯誤。400錯誤表示 由於語法格式有誤,伺服器無法理解此請求。但後台的介面確實可以進行post請求。之後發現原因是當flask的request.form無法獲取到對應的引數時,就會報400錯誤。

request.form['name'] # 如果無法獲取name的值,報400錯誤

request.form.get('name',none) # 無法獲取到name的值時不報錯

1.2 將後台的request.form列印檢視,確實沒有獲取到requests傳來的資料。但通過ajax傳送資料時,卻可以獲取到。通過谷歌瀏覽器工具檢視ajax請求,發現post的提交方式是x-www-form-urlencoded,在requests中新增以下header。

-form

-urlencoded;charset=utf-

8但後台仍然無法獲取引數。到這裡明白,問題肯定出現在post的提交方式上,所以對post的提交方式進行進一步了解。(可參考四種常見的 post 提交資料方式)

原來,x-www-form-urlencoded的資料格式類似於get方法,是「a=xx&b=xx」的結構,而不是json格式。將requests中data引數的值改為「a=xx&b=xx」的格式後,後台成功獲取引數。

這個問題其實很簡單,但由於對http協議不熟,導致花了較多時間在這上面。所以對常見的網路協議還是要深入學習下。

Flask處理前端POST過來的JSON資料

post json資料的js ajax success function data 對於前端post請求傳送過來的json資料,flask後台可使用request.get data 來接收資料,資料的格式為 bytes 加上as text true 引數後就變成 unicode 了 再使用 json...

csrf原理及flask的處理方法

例如,由 ajax 傳送的 post 請求,然而它背後並沒有表單。在 flask wtf 0.9.0 以前的版本你無法獲得 csrf 令牌。這是為什麼我們要實現 csrf。使用者正常登入a銀行 a 返回cookie資訊給使用者,瀏覽器儲存cookie資訊 在a 沒有退出登入的情況下 或者說cooki...

Flask處理Web表單的實現方法

web表單是web應用程式的基本功能。它是html頁面中負責資料採集的部件。表單有三個部分組成 表單標籤 表單域 表單按鈕。表單允許使用者輸入資料,負責html頁面資料採集,通過表單將使用者輸入的資料提交給伺服器。在flask中,為了處理web表單,我們一般使用flask wtf擴充套件,它封裝了w...