python?flask框架中多種查詢參數(shù)的獲取方式
flask的生命周期
整個htpp請求在flask框架中的流程如下:
客戶端—>wsgi應(yīng)用程序->全局鉤子–> 路由 --> 視圖 --> 路由—> 全局鉤子 —> wsgi應(yīng)用程序—> 客戶端
request請求對象
文檔: https://flask.palletsprojects.com/en/2.0.x/api/#flask.Request
- request:flask中代表當前請求的 request 對象
- 作用:在視圖函數(shù)中取出本次客戶端的請求數(shù)據(jù)
- 導(dǎo)入:from flask import request
- 源代碼位置:
- 代理類 from flask.app import Request —> from flask.globals.Request
- 源碼類:from flask.wrappers.Request
- 基類:from werkzeug.wrappers import Request as RequestBase
request,常用的屬性如下:
注意,request對象要在視圖函數(shù)里面使用
獲取請求中各項數(shù)據(jù)
from flask import Flask, request # 項目實例應(yīng)用對象 app = Flask(__name__) # 加載配置 app.config.update({ "DEBUG": True }) # 在http的常用請求方法中,delete和get是沒有請求體的!?。? @app.route(rule="/") def index(): """獲取請求體""" print(request) return 'hello flask' if __name__ == '__main__': app.run(host="0.0.0.0", port=5000)
瀏覽器訪問,終端打印request對象
單個參數(shù)值獲取
url中每個查詢參數(shù)只有一個值的情況:
from flask import Flask, request # 項目實例應(yīng)用對象 app = Flask(__name__) # 加載配置 app.config.update({ "DEBUG": True }) # 在http的常用請求方法中,delete和get是沒有請求體的!??! @app.route(rule="/qs") def index(): """ 獲取客戶端請求的查詢字符串參數(shù) :return: """ """ 請求url:http://127.0.0.1:5000/qs?user=xiaoming&age=16 """ # 獲取原始的查詢字符串參數(shù),格式:bytes print(request.query_string) # b'user=xiaoming&age=16' # # 針對原始的查詢字符串參數(shù),轉(zhuǎn)換成字典格式 # query_string = parse_qs(request.query_string.decode()) # print(query_string) # {'user': ['xiaoming'], 'age': ['16']} # # 獲取參數(shù)值 # print(query_string["user"][0]) # # 獲取查詢字符串參數(shù),格式:ImmutableMultiDict # print(request.args) # # ImmutableMultiDict([('user', 'xiaoming'), ('age', '16')]) # # 獲取單個參數(shù)值 # print(request.args["user"]) # print(request.args["age"]) # print(request.args.get("age")) # """ # 請求url:http://127.0.0.1:5000/qs?user=xiaoming&fav=shopping&fav=coding&fav=rap # """ # # print(request.args["user"]) # 'xiaoming' # # print(request.args["fav"]) # 'shopping' # # print(request.args.get("user")) # 'xiaoming' # # print(request.args.getlist("fav")) # ['shopping', 'coding', 'rap'] # return "hello, flask" if __name__ == '__main__': app.run(host="0.0.0.0", port=5000)
瀏覽器請求:
request.query_string 查詢參數(shù),是byte類型數(shù)據(jù)
針對原始的查詢字符串參數(shù),默認是byte類型,我們可以將其轉(zhuǎn)換成字典格式
需要導(dǎo)包:
from urllib.parse import parse_qs # # 針對原始的查詢字符串參數(shù),轉(zhuǎn)換成字典格式 query_string = parse_qs(request.query_string.decode()) print(query_string) # {'user': ['xiaoming'], 'age': ['16']}
注意,得到的字典值是列表類型
# # 獲取參數(shù)值 print(query_string["user"][0])
request.args是ImmutableMultiDict類型數(shù)據(jù)
# # 獲取單個參數(shù)值 print(request.args["user"]) print(request.args["age"]) print(request.args.get("age"))
多個參數(shù)值獲取
url中查詢參數(shù)有多個值的情況:
#多個參數(shù)值獲取 # """ # 請求url:http://127.0.0.1:5000/qs?user=xiaoming&fav=shopping&fav=coding&fav=rap # """ print(request.args) print(request.args["user"]) # 'xiaoming' #通過字典鍵的方式獲取多參數(shù)值,只能獲取第一個 print(request.args["fav"]) # 'shopping' print(request.args.get("user")) # 'xiaoming' #使用getlist()方式,可以獲取全部 print(request.args.getlist("fav")) # ['shopping', 'coding', 'rap']
瀏覽器請求:
終端打印
完整獲取查詢參數(shù)代碼
from flask import Flask, request from urllib.parse import parse_qs # 項目實例應(yīng)用對象 app = Flask(__name__) # 加載配置 app.config.update({ "DEBUG": True }) # 在http的常用請求方法中,delete和get是沒有請求體的!??! @app.route(rule="/qs") def index(): """ 獲取客戶端請求的查詢字符串參數(shù) :return: """ """ 請求url:http://127.0.0.1:5000/qs?user=xiaoming&age=16 """ # 獲取原始的查詢字符串參數(shù),格式:bytes # print(request.query_string) # b'user=xiaoming&age=16' # 獲取查詢字符串參數(shù),格式:ImmutableMultiDict # print(request.args) # # 針對原始的查詢字符串參數(shù),轉(zhuǎn)換成字典格式 # query_string = parse_qs(request.query_string.decode()) # print(query_string) # {'user': ['xiaoming'], 'age': ['16']} # # 獲取參數(shù)值 # print(query_string["user"][0]) # # 獲取查詢字符串參數(shù),格式:ImmutableMultiDict # print(request.args) # # ImmutableMultiDict([('user', 'xiaoming'), ('age', '16')]) # # 獲取單個參數(shù)值 # print(request.args["user"]) # print(request.args["age"]) # print(request.args.get("age")) #多個參數(shù)值獲取 # """ # 請求url:http://127.0.0.1:5000/qs?user=xiaoming&fav=shopping&fav=coding&fav=rap # """ print(request.args) print(request.args["user"]) # 'xiaoming' #通過字典鍵的方式獲取多參數(shù)值,只能獲取第一個 print(request.args["fav"]) # 'shopping' print(request.args.get("user")) # 'xiaoming' #使用getlist()方式,可以獲取全部 print(request.args.getlist("fav")) # ['shopping', 'coding', 'rap'] return "hello, flask" if __name__ == '__main__': app.run(host="0.0.0.0", port=5000)
總結(jié):以上就是python flask框架中多種查詢參數(shù)的獲取方式的詳細內(nèi)容,更多關(guān)于python flask查詢參數(shù)獲取的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
DataFrame窗口函數(shù)rolling()的用法
這篇文章主要介紹了DataFrame窗口函數(shù)rolling()的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02對Python中DataFrame選擇某列值為XX的行實例詳解
今天小編就為大家分享一篇對Python中DataFrame選擇某列值為XX的行實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01在jupyter notebook中使用pytorch的方法
這篇文章主要介紹了在jupyter notebook中使用pytorch的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09Python3自定義http/https請求攔截mitmproxy腳本實例
這篇文章主要介紹了Python3自定義http/https請求攔截mitmproxy腳本實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05