it-swarm.com.de

Wie erhalten Sie eine Abfragezeichenfolge für Flask?

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")
292
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')
567
Kracekumar

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.

187
Lyndsy Simon

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.

13

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/

12
Simon Sapin

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:

 query parameters in Flask route 

Referenzen:

  1. Offizielle API-Dokumentation zu query_string
1
Michael Ribbons

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)

Ausgabe:  enter image description here 

0
Sankar guru

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
0
Manan Gouhari