クエリ文字列を取得する方法に関するフラスコのドキュメントからは明らかではありません。私は新しいです、ドキュメントを見て、見つかりませんでした!
そう
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
クエリ文字列を取得する方法に関するフラスコのドキュメントからは明らかではありません。私は新しいです、ドキュメントを見て、見つかりませんでした!
そう
@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には抽象化された方法でアクセスするためのメカニズムがあります。やむを得ない理由がない限り、これらを使用する必要があります。
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を使用します。
例:
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 /?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
ご覧のように、これはほんの小さな例です。複数の値をフェッチして、それらを形成し、使用するか、テンプレートファイルに渡すことができます。
クエリ文字列から値を取得する方法ではなく、クエリ文字列を探してここに来ました。
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 __name__ == '__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 __name__ == '__main__':
app.run(debug=True)
O'Reilly Flask Web Devleopmentで説明されているフラスコリクエストオブジェクトから取得可能なクエリ文字列のすべての形式:
オライリーフラスコウェブ開発、およびそれ以前のマナン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
ん属性、ないクエリ文字列が含まれているが、しかしこれは、別の属性の一部に含まれていない私が一瞬一覧表示されますクエリ文字列が含まれます。ただし、1つ目は、form
「すべてのフォームフィールドがリクエストとともに送信された辞書」です。私はこれを言うために言います:と呼ばれるフラスコリクエストオブジェクトで利用可能な別の辞書属性がありますvalues
。values
「form
との値を組み合わせた辞書」args
です。これを取得すると、次のようになります。
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(繰り返し.get('<arg_name>')
ますが、辞書から特定のアイテムを取得するために使用します)
別のオプションは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
幸せなハッキング:)
これは、を使用して行うことができますrequest.args.get()
。たとえば、クエリ文字列にフィールドがある場合、次のdate
ようにしてアクセスできます
date = request.args.get('date')
request
フラスコからのインポートのリストに" " を追加することを忘れないでください。
from flask import request
request.args.get()
。古い質問に対する新しい回答には、以前に言及されていないものを含める必要があります。
リクエストが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)