使用 Flask 獲取查詢引數

Salman Mehmood 2022年7月18日
使用 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 以檢視顯示的引數。

Flask 獲取查詢引數輸出 1

現在我們可以看到我們很容易從查詢字串中提取這些值。

我們將再舉一個例子來訪問所有查詢引數。我們將建立一個名為 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")}'

現在我們儲存並啟動伺服器,進入瀏覽器,並在路由中提供鍵值對。當我們執行這個頁面時,我們可以看到顯示的引數,以及我們可以在控制檯中看到列印鍵和值的地方。

Flask 獲取查詢引數輸出 2

這與從表單中獲取資料非常相似;如果有人提交表單,我們可以從端點提取它。

完整的 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)
Salman Mehmood avatar Salman Mehmood avatar

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