Flask系列02--Flask中的request
一.Flask中的request方法
1.數據相關
#flask中request,render_template等方法要通過引包的方式引入 from flask import request ? request.args # 獲取URL中的數據 request.form # 獲取form表單中(FormData)的數據 request.values # 獲取args+form 知道就可以了 request.data # 流, 獲取請求體中的原始數據 request.json # 字典, 請求頭中帶有Content-Type:application/json 將請求體中的數據反序列化到json中但是在data中依然存儲這原始數據bytes ? request.files 獲取FormData中的文件數據 request.files.get("my_file") request.files.save(默認提交的文件名)
2.常用方法
request.cookies # 將cookies中信息讀取出來 request.headers # 獲取請求頭中的信息
3.獲取路徑相關
# 獲取當前的url路徑 print(request.path)# /req ? # 當前url路徑的上一級路徑 print(request.script_root) ?# 當前url的全部路徑 print(request.url) # http://127.0.0.1:5000/req ? # 當前url的路徑的上一級全部路徑 print(request.url_root ) # http://127.0.0.1:5000/
二.request方法使用
1.request.method 獲取http請求的方式,Flask 的 request 中給我們提供了一個 method 屬性裏面保存的就是前端的請求的方式
print(request.method) # POST 看來可以使用這種方式來驗證請求方式了
2.request.form 獲取form表單中傳遞過來的值
print(request.form) # ImmutableMultiDict([(‘key‘, ‘asd‘)]) # ImmutableMultiDict 它看起來像是的Dict print(request.form["key"]) # ‘asd‘ print(list(request.form.keys())) # [‘key‘] # 將它的結果轉化為字典便於使用, 其中有些坑,小心 req_dict = dict(request.form) req_dict = request.form.to_dict()
3.request.args 其中包含url所有的參數
如圖訪問,結果如下
print(request.args) # ImmutableMultiDict([(‘name‘, ‘1‘)])
4. request.values 包含所有參數,只要是參數就包含
輸入如圖所示, 結果如下
print(request.values) # CombinedMultiDict([ImmutableMultiDict([(‘name‘, ‘1‘)]), ImmutableMultiDict([(‘值‘, ‘asd‘)])])
註意
如果url和form中的Key重名的話,使用vlaues.to_dict()時,form中的同名的key中value會被url中的value覆蓋,但是request.values()的結果還是有兩個
# http://127.0.0.1:5000/test?name=1 print(request.values.to_dict()) # {‘name‘: 1} print(request.values) # CombinedMultiDict([ImmutableMultiDict([(‘name‘, ‘1‘)]), ImmutableMultiDict([(‘name‘, ‘10‘)])])
5.request.cookies 讀取cookies中的信息,存在瀏覽器端的字符串都會包含,前提是要開啟瀏覽器的cookies
6.request.headers 獲取本次請求的請求頭
print(request.headers) Host: 127.0.0.1:5000 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9
7. request.data 無法處理的數據就變成了字符串存放在data中
request是基於mimetype進行處理的,mimetype的類型以及字符串 : http://www.w3school.com.cn/media/media_mimeref.asp,如果不屬於上述類型的描述,request就會將無法處理的參數轉為Json存入到 data 中,其實我們可以將 request.data , json.loads 同樣可以拿到裏面的參數
8. request.files 其中包含上傳的文件, flask將這個操作做了一些封裝,使用很簡單
html代碼
print(request.files) # ImmutableMultiDict([(‘file‘, <FileStorage: ‘test.txt‘ (‘text/plain‘)>)]) print(request.files["file"]) # <FileStorage: ‘test.txt‘ (‘text/plain‘)> my_file = request.files["file"] my_file.save("test.txt") # 保存文件,裏面可以寫完整路徑+文件名
9.request.json 在請求頭中寫入了 "application/json" 使用 request.json 則返回json解析數據, 否則返回 None
Flask系列02--Flask中的request