1. 程式人生 > >Flask系列02--Flask中的request

Flask系列02--Flask中的request

one 分享圖片 like storage json解析 結果 key 3.0 使用

一.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