使用 Flask 獲取查詢引數
通過這個解釋,我們將學習如何藉助 Flask 中的請求查詢字串從 URL 中獲取引數。
藉助 Flask 中的請求查詢字串提取引數
通常,我們在 Flask 中使用我們的引數構建一個乾淨的 URL,但有時我們出於某種原因想要一個傳統的查詢字串。我們的查詢字串易於使用;它們只是由&
和右側的值分隔。
現在我們將向你展示如何提取它們,我們可以在應用程式的某個地方使用它們,所以讓我們開始吧。我們將設定我們的 Flask 應用程式,我們將從 Flask 模組匯入 Flask
類,我們還需要匯入請求變數並使用 Flask
類例項化一個物件。
from flask import Flask, request
我們將定義主塊,在這個塊內,我們將使用 run()
方法來執行我們的應用程式。然後我們將把 debug
等於 True
。
if __name__ == "__main__":
app.run(debug=True)
現在我們將建立一個新路由併為此路由呼叫 params
,該函式將命名為 Get_Query_Params()
。我們將返回一些字串以從查詢字串中獲取引數。
我們將需要使用 requests 變數,定義兩個引數並訪問查詢引數。要獲取它們,我們只需要呼叫 requests.args
,這是一個包含查詢字串中所有引數的字典。
第一個將被稱為 VAR1
,第二個將被稱為 VAR2
並使用 requests.args['key']
鍵儲存字典值。我們正在返回這些字典項以在頁面上顯示它們。
@app.route("/params")
def Get_Query_Params():
VAR1 = request.args["var1"]
VAR2 = request.args["var2"]
return f"Student name is: {VAR!} and Father nmae is: {VAR2}"
讓我們啟動伺服器,在路由內部傳遞引數,然後點選 Enter 以檢視顯示的引數。
現在我們可以看到我們很容易從查詢字串中提取這些值。
我們將再舉一個例子來訪問所有查詢引數。我們將建立一個名為 var1
的變數,它將儲存 request.args
;這是一個包含我們作為查詢引數提供的所有鍵和值的字典。
現在我們將在字典項上應用一個 for
迴圈,並能夠訪問和列印這些鍵和值。
@app.route("/")
def Get_Query_Params():
var1 = request.args
for key, value in var1.items():
print(key, value)
使用這些鍵,我們還可以使用 if-else 語句訪問特定的查詢引數,以檢查這些實際查詢引數是否存在。目前,我們用來訪問金鑰的方式是使用 var1.get()
而不是使用 request.args['key']
因為 get()
是幫助我們訪問金鑰的方法。
if "nationality" in var1.keys():
print(var1.get("nationality"))
return f'Age is {var1.get("age")} and nationality is {var1.get("nationality")}'
現在我們儲存並啟動伺服器,進入瀏覽器,並在路由中提供鍵值對。當我們執行這個頁面時,我們可以看到顯示的引數,以及我們可以在控制檯中看到列印鍵和值的地方。
這與從表單中獲取資料非常相似;如果有人提交表單,我們可以從端點提取它。
完整的 Python 程式碼:
from flask import Flask, request
app = Flask(__name__)
# @app.route('/params')
# def Get_Query_Params():
# VAR1=request.args['var1']
# VAR2=request.args['var2']
# return f'Student name is: {VAR1} and Father nmae is: {VAR2}'
@app.route("/")
def Get_Query_Params():
var1 = request.args
for key, value in var1.items():
print(key, value)
if "nationality" in var1.keys():
print(var1.get("nationality"))
return f'Age is {var1.get("age")} and nationality is {var1.get("nationality")}'
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn