Nicht offensichtlich aus der Flaschendokumentation zum Abrufen der Abfragezeichenfolge. Ich bin neu, habe mir die docs angesehen, konnte nicht finden!
So
@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')
Die vollständige URL ist als request.url
und die Abfragezeichenfolge als request.query_string
verfügbar.
Hier ist ein Beispiel:
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
return request.query_string
Um auf einen einzelnen bekannten Parameter zuzugreifen, der in der Abfragezeichenfolge übergeben wird, können Sie request.args.get('param')
verwenden. Dies ist, soweit ich weiß, der "richtige" Weg.
ETA: Bevor Sie fortfahren, sollten Sie sich fragen, warum Sie die Abfragezeichenfolge verwenden möchten. Ich habe noch nie den rohen String eingezogen - Flask verfügt über Mechanismen, um auf abstrahierte Weise darauf zuzugreifen. Sie sollten diese verwenden, wenn Sie keinen zwingenden Grund haben, dies nicht zu tun.
Wir können dies tun, indem wir request.query_string verwenden.
Beispiel:
Betrachten wir 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())
Sie machen es auch modularer, indem Sie Flask Blueprints verwenden - http://flask.pocoo.org/docs/0.10/blueprints/
Betrachten wir, dass Vorname als Teil der Abfragezeichenfolge übergeben wird/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
Wie Sie sehen, ist dies nur ein kleines Beispiel - Sie können mehrere Werte abrufen und diese formatieren und verwenden oder an die Vorlagendatei übergeben.
Werkzeug/Flask hat da schon alles für Sie geparst. Keine Notwendigkeit, die gleiche Arbeit noch einmal mit URL zu erledigen:
from flask import request
@app.route('/')
@app.route('/data')
def data():
query_string = request.query_string ## There is it
return render_template("data.html")
Die vollständige Dokumentation der Anforderungs- und Antwortobjekte befindet sich in Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/
Ich bin hierher gekommen, um nach der Abfragezeichenfolge zu suchen, nicht nach dem Abrufen von Werten aus der Abfragezeichenfolge.
request.query_string
gibt die URL-Parameter als Rohbyte-Zeichenfolge zurück (Ref 1).
Beispiel für die Verwendung von 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)
Ausgabe:
Referenzen:
Versuchen Sie dies für Abfragezeichenfolge:
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)
Dies kann mit request.args.get()
..__ erfolgen. Wenn Ihre Abfragezeichenfolge beispielsweise ein Feld date
enthält, kann auf sie zugegriffen werden
date = request.args.get('date')
Vergessen Sie nicht, "request
" zur Liste der Importe aus der Flasche hinzuzufügen,
from flask import request