558

Flaskルートのクエリパラメータまたはクエリ文字列にどのようにアクセスしますか?Flaskのドキュメントからは明らかではありません。

以下のルート例/dataは、そのデータにアクセスしたいコンテキストを示しています。誰かがのようなものを要求した場合example.com/data?abc=123、文字列にアクセスする?abc=123か、のようなパラメータの値を取得できるようにしたいと思いますabc

@app.route("/data")
def data():
    # query_string = ???
    return render_template("data.html")
4

12 に答える 12

1041
from flask import request

@app.route('/data')
def data():
    # here we want to get the value of user (i.e. ?user=some-value)
    user = request.args.get('user')
于 2012-08-02T09:14:53.163 に答える
306

完全なURLはとして利用できrequest.url、クエリ文字列はとして利用できますrequest.query_string.decode()

次に例を示します。

from flask import request

@app.route('/adhoc_test/')
def adhoc_test():

    return request.query_string

クエリ文字列で渡された個々の既知のパラメータにアクセスするには、を使用できますrequest.args.get('param')。私の知る限り、これはそれを行うための「正しい」方法です。

ETA:先に進む前に、クエリ文字列が必要な理由を自問する必要があります。生の文字列を取り込む必要はありませんでした。Flaskには、抽象化された方法で文字列にアクセスするためのメカニズムがあります。やむを得ない理由がない限り、これらを使用する必要があります。

于 2012-08-02T16:29:15.310 に答える
20

クエリ文字列から値を取得する方法ではなく、クエリ文字列を探してここに来ました。

request.query_stringURLパラメータを生のバイト文字列として返します(参照1)。

使用例request.query_string

from flask import Flask, request

app = Flask(__name__)

@app.route('/data', methods=['GET'])
def get_query_string():
    return request.query_string

if __name__ == '__main__':
    app.run(debug=True)

出力:

Flaskルートのクエリパラメータ

参照:

  1. query_stringの公式APIドキュメント
于 2019-03-20T00:46:57.033 に答える
17

request.query_stringを使用してこれを行うことができます。

例:

view.pyを考えてみましょう

from my_script import get_url_params

@app.route('/web_url/', methods=('get', 'post'))
def get_url_params_index():
    return Response(get_url_params())

また、Flaskブループリントを使用してモジュール化を強化します-https ://flask.palletsprojects.com/en/1.1.x/blueprints/

名がクエリ文字列/web_url/?first_name=johnの一部として渡されていると考えてみましょう

## here is my_script.py

## import required flask packages
from flask import request
def get_url_params():
    ## you might further need to format the URL params through escape.    
    firstName = request.args.get('first_name') 
    return firstName
    

ご覧のとおり、これはほんの小さな例です。複数の値をフェッチしてフォーマットし、それを使用するか、テンプレートファイルに渡すことができます。

于 2015-05-29T05:26:53.710 に答える
15

すでにすべてを解析したWerkzeug/Flask。urlparseで同じ作業を再度行う必要はありません。

from flask import request

@app.route('/')
@app.route('/data')
def data():
    query_string = request.query_string  ## There is it
    return render_template("data.html")

リクエストオブジェクトとレスポンスオブジェクトの完全なドキュメントは、Werkzeugにあります:http ://werkzeug.pocoo.org/docs/wrappers/

于 2012-08-03T09:08:44.213 に答える
8

クエリ文字列については、次のようにしてみてください。

from flask import Flask, request

app = Flask(__name__)

@app.route('/parameters', methods=['GET'])
def query_strings():

    args1 = request.args['args1']
    args2 = request.args['args2']
    args3 = request.args['args3']

    return '''<h1>The Query String are...{}:{}:{}</h1>''' .format(args1,args2,args3)


if __name__ == '__main__':

    app.run(debug=True)

出力: ここに画像の説明を入力してください

于 2019-04-25T11:35:58.037 に答える
7

O'Reilly Flask Web Devleopmentで説明されているように、フラスコリクエストオブジェクトから取得可能なクエリ文字列のすべての形式:

O'Reilly Flask Web Developmentから、そして以前にManan Gouhariが述べたように、最初にリクエストをインポートする必要があります。

from flask import request

requestは、Flaskによって(ご想像のとおり)という名前のコンテキスト変数として公開されているオブジェクトですrequest。その名前が示すように、クライアントがHTTPリクエストに含めたすべての情報が含まれています。このオブジェクトには、それぞれ取得および呼び出すことができる多くの属性とメソッドがあります。

request選択するクエリ文字列を含む属性がかなりあります。ここでは、クエリ文字列を含むすべての属性と、その属性のO'Reillyブックからの説明を一覧表示します。

まずargs、「URLのクエリ文字列に渡されたすべての引数を含む辞書」があります。したがって、クエリ文字列を辞書に解析する場合は、次のようにします。

from flask import request

@app.route('/'):
    queryStringDict = request.args

(他の人が指摘しているように.get('<arg_name>')、辞書から特定の値を取得するために使用することもできます)

次に、クエリ文字列を含まないform属性がありますが、これは、後でリストするクエリ文字列を含む別の属性の一部に含まれています。ただし、最初は「リクエストとともに送信されたすべてのフォームフィールドを含む辞書」です。私はこれを言うと言います:フラスコリクエストオブジェクトで利用可能な別の辞書属性があります。は「との値を組み合わせた辞書」です。これを取得すると、次のようになります。formvaluesvaluesformargs

from flask import request

@app.route('/'):
    formFieldsAndQueryStringDict = request.values

(繰り返します.get('<arg_name>')が、辞書から特定のアイテムを取得するために使用します)

もう1つのオプションはquery_string、「URLのクエリ文字列部分を生のバイナリ値として」です。その例:

from flask import request

@app.route('/'):
    queryStringRaw = request.query_string

次に、追加のボーナスとして、full_path「URLのパスとクエリ文字列の部分」があります。ejemploによる:

from flask import request

@app.route('/'):
    pathWithQueryString = request.full_path

そして最後にurl、「クライアントによって要求された完全なURL」(クエリ文字列を含む):

from flask import request

@app.route('/'):
    pathWithQueryString = request.url

ハッピーハッキング:)

于 2020-04-25T03:49:08.560 に答える
2

以下の実装は私のために働いた。

from flask import request
def getVerificationStatus():
try:
    requestId=int(request.args.get('requestId'))
    print(requestId)
    status= verificationStepRepository.getVerificationStatus(requestId)
    return tb.responsify(200, "success", status)
except Exception as e:
    return errorHandler.dispatchInternalServerError(str(e))
于 2021-04-14T19:19:49.963 に答える
2

私は好きです

user = request.args['user'] if 'user' in request.args else 'guest'

以上

user = request.args.get('user')

このようにして、URLに実際にクエリ文字列が最初に含まれていることを確認できます

于 2021-09-23T20:55:52.967 に答える
1

これは、を使用して実行できますrequest.args.get()。たとえば、クエリ文字列にフィールドがある場合、次のdateコマンドを使用してアクセスできます。

date = request.args.get('date')

requestフラスコからの輸入品のリストに「」を追加することを忘れないでください。

from flask import request
于 2019-01-10T08:43:19.453 に答える
1

GETの場合のリクエストで、いくつかのクエリパラメータを渡した場合は、

fro`enter code here`m flask import request
@app.route('/')
@app.route('/data')
def data():
   if request.method == 'GET':
      # Get the parameters by key
      arg1 = request.args.get('arg1')
      arg2 = request.args.get('arg2')
      # Generate the query string
      query_string="?arg1={0}&arg2={1}".format(arg1, arg2)
      return render_template("data.html", query_string=query_string)
于 2020-02-15T18:35:45.767 に答える
1

多くの場合、クエリ文字列全体を適切なPythonデータ構造にマッピングし、そこから取得したいだけです。キーワードは繰り返すことができるため、適切な構造はマルチディクショナリです。たとえば、を処理する必要がありA=123&A=456&B=789ます。マルチディクショナリは2タプルのリストであり、各2タプルには最初の項目としてキーが含まれ、2番目の項目として値のリストが含まれているため、上記はになり[('A',['123','456']),('B',['789'])]ます。これはすべて、

qstr = request.args.lists() # A generator for the multi-dict
qstr = list(qstr) # To get the actual multi-dict

重複するキーワードの最初の出現が使用される辞書だけが必要な場合は、

qstr = request.args.to_dict()
于 2021-11-17T02:22:24.643 に答える