rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象
一個正在努力變強的公眾號
本文內容:
request的form_data_args用法
上傳文件
就是 Flask 中表示當前請求的 request 對象,request對象中保存了一次HTTP請求的一切信息。
這里給大家準備了一張表格:
大家看完表格可能也沒什么感覺,到底怎么去使用它們呢?
# -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/post", methods=["GET","POST"])def post(): name = request.form.get("name") age = request.form.get("age") return "hello name=%s age=%s" % (name, age)if __name__ == '__main__': app.run(debug=True)可以看到在post視圖函數當中的語句,意思就是獲取到表單數據當中的name和age的值。
這里可能就會有些朋友不懂表單數據是什么了,其實學過html的基本上都會下面的這個標簽
<form method="post"> <input name="name" type="text"> <input name="age" type="text"> <input type="submit"> form>上面就是一個表單,也就是需要我們去填寫的一個表格,然后把我們填寫的內容放入請求體中返回給服務器。
為了給大家演示,我這里采用的是postman軟件,這是一款可以模擬多種請求方式的軟件,扔給大家一個鏈接:
https://www.getpostman.com/downloads/
我就用這款軟件來模擬post請求
以表單的形式發送:
可以看到我們成功的請求了數據,同時也成功的獲取到了表單當中的數據,如果我們不使用這款模擬軟件,我們也可以自行去寫form表單進行測試。
這里我們思考一下,如果我們去打印request中的data數據會是什么返回結果?data是指請求體當中的數據,我們來測試看看:
@app.route("/post", methods=["GET","POST"])def post(): name = request.form.get("name") age = request.form.get("age") print(request.data) return "hello name=%s age=%s" % (name, age)返回的結果:
可以看到返回的結果是空的,這是為什么呢?我們明明post數據到request當中了。其實在這之前我們就已經將請求體當中的數據放到了form字典當中去了,也就是將 name=kuls&age=11 這類的數據轉化成類字典的形式了,所以data當中的數據已經不存在了
那么我們再看一種情況
我們如果按照JSON格式的數據發送過去,會是怎樣的情況
可以看到這里返回的是空的,為什么?這個時候我們再去控制臺看下data當中有么有數據返回
可以看到data當中是有數據的,這也就說明了,當我們從前端發送的數據如果是表單的數據就可以直接從form里面進行提取,如果不是表單數據那我們無法form中提取東西,我們只能從data當中去提取請求體當中的數據
大家可能看到過底下這種地址:
http://127.0.0.1:5000/post?city=hunan這種地址稱為查詢字符串,在request當中也有相關的屬性args
@app.route("/post", methods=["GET","POST"])def?post(): city = request.args.get("city") print(request.data) return "hello city=%s" % (city)返回結果:
args的整體思路和form差不多,所以這里不過多闡述
上傳文件上傳文件主要用了request當中最后一個屬性files
# -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/upload", methods=["GET","POST"])def upload(): f = request.files.get("pic") if f is None: # 沒有發送文件 return "未上傳文件" # 將文件保存在本地 # 1.創建一個文件 f1 = open("./demo.png", "wb") # 2.向文件寫內容 data = f.read() f1.write(data) f1.close() return "上傳成功"if __name__ == '__main__': app.run(debug=True)我們運行代碼,并且再次使用postman來進行模擬上傳文件。
這里簡單教大家一下如何來上傳
按照圖中操作
填寫headers:
Key:Content-Type
Value:multipart/form-data
最后在body當中上傳
我們運行一下這次的案例
可以看到我們成功上傳!
其實在這里我們有一個更加簡單的寫法:
# -*- coding: utf-8 -*-from flask import Flask,requestapp = Flask(__name__)@app.route("/upload", methods=["GET","POST"])def upload(): f = request.files.get("pic") if f is None: # 沒有發送文件 return "未上傳文件" # 直接使用上傳的文件對象保存 f.save("./demo1.jpg") return "上傳成功"if __name__ == '__main__': app.run(debug=True)直接通過上傳的文件對象進行保存即可,效果相同!
Flask系列文章:
小白學Flask第一天 | 我的第一個Flask程序
小白學Flask第二天| app對象的初始化和配置
小白學Flask第三天| 今天把視圖函數的路由給講清楚!
小白學Flask第四天| 把路由轉換器玩的更牛逼
持續更新中...
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询手机号段对应地区编码_想知道海关统计
- 下一篇: vector删除第i个元素_LeetCo