web-dev-qa-db-ja.com

Flaskでクエリ文字列を取得するにはどうすればよいですか?

クエリ文字列の取得方法に関するflaskドキュメントからは明らかではありません。私は新しく、ドキュメントを見て、見つけることができませんでした!

そう

@app.route('/')
@app.route('/data')
def data():
    query_string=??????
    return render_template("data.html")
335
Tampa
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')
607
Kracekumar

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

これが例です:

from flask import request

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

    return request.query_string

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

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

196
Lyndsy Simon

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 Blueprintsを使うことでよりモジュール化することもできます - http://flask.pocoo.org/docs/0.10/blueprints/

ファーストネームがクエリ文字列/ web_url /?の一部として渡されていると考えてみましょう。

## 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

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

13

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/

12
Simon Sapin

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

request.query_stringはURLパラメータを生のバイト文字列として返します(参照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 __== '__main__':
    app.run(debug=True)

出力:

query parameters in Flask route

参照:

  1. query_stringに関する公式のAPIドキュメント
1
Michael Ribbons

クエリ文字列に対して次のように試してください。

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 __== '__main__':

    app.run(debug=True)

出力: enter image description here

0
Sankar guru

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

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

Flaskからのインポートのリストに "request"を追加することを忘れないでください。

from flask import request
0
Manan Gouhari