クエリ文字列の取得方法に関するflaskドキュメントからは明らかではありません。私は新しく、ドキュメントを見て、見つけることができませんでした!
そう
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
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')
完全な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には抽象化された方法でそれにアクセスするためのメカニズムがあります。あなたがしないように説得力のある理由がない限りあなたはそれらを使用するべきです。
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
ご覧のとおり、これはほんの一例です - 複数の値を取得してそれらをフォーマットし、それを使用するか、テンプレートファイルに渡すことができます。
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/
クエリ文字列から値を取得する方法ではなく、クエリ文字列を探しています。
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)
出力:
参照:
クエリ文字列に対して次のように試してください。
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)
これはrequest.args.get()
を使って行うことができます。たとえば、クエリ文字列にフィールドdate
がある場合は、次のようにしてアクセスできます。
date = request.args.get('date')
Flaskからのインポートのリストに "request
"を追加することを忘れないでください。
from flask import request