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 変数を使用し、2つの引数を定義して、クエリパラメータにアクセスする必要があります。それらを取得するには、クエリ文字列内のすべてのパラメータを含む辞書である requests.args
を呼び出すだけです。
最初のものは VAR1
と呼ばれ、2 番目のものは 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を押してパラメーターが表示されることを確認します。
これで、クエリ文字列からこれらの値を簡単に抽出できることがわかります。
もう 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 ステートメントを使用して特定のクエリパラメーターにアクセスし、それらの実際のクエリパラメーターが存在することを確認することもできます。今のところ、キーへのアクセスに使用する方法は、request.args['key']
ではなく var1.get()
を使用することです。これは、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