web-dev-qa-db-fra.com

Comment obtenez-vous une chaîne de requête sur Flask?

Ce n'est pas évident dans la documentation de la fiole sur la façon d'obtenir la chaîne de requête. Je suis nouvelle, j'ai regardé la documentation, je ne pouvais pas trouver! 

Alors

@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

L'URL complète est disponible en tant que request.url et la chaîne de requête est disponible en tant que request.query_string.

Voici un exemple:

from flask import request

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

    return request.query_string

Pour accéder à un paramètre connu connu passé dans la chaîne de requête, vous pouvez utiliser request.args.get('param'). C'est la "bonne" façon de le faire, autant que je sache.

ETA: Avant d’aller plus loin, vous devriez vous demander pourquoi vous voulez la chaîne de requête. Je n'ai jamais eu à tirer dans la chaîne brute - Flask dispose de mécanismes pour y accéder de manière abstraite. Vous devriez les utiliser sauf si vous avez une raison impérieuse de ne pas le faire.

187
Lyndsy Simon

Nous pouvons le faire en utilisant request.query_string.

Exemple:

Permet de considérer 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())

Vous le rendez plus modulaire en utilisant Flask Blueprints - http://flask.pocoo.org/docs/0.10/blueprints/

Considérons que le prénom est transmis en tant que partie de la chaîne de requête/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

Comme vous le voyez, ce n’est qu’un petit exemple: vous pouvez extraire plusieurs valeurs + les formater et les utiliser ou les transmettre au fichier modèle.

13

Werkzeug/Flask a déjà tout analysé pour vous. Pas besoin de refaire le même travail avec 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")

La documentation complète des objets requête et réponse se trouve dans Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/

12
Simon Sapin

Je suis venu ici à la recherche de la chaîne de requête, pas comment obtenir des valeurs de la chaîne de requête.

request.query_string renvoie les paramètres d'URL sous forme de chaîne d'octets bruts (Réf 1).

Exemple d'utilisation de 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)

Sortie:

 query parameters in Flask route

Références:

  1. Documentation officielle de l'API sur query_string
1
Michael Ribbons

Essayez comme ceci pour la chaîne de requête:

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)

Sortie:  enter image description here

0
Sankar guru

Cela peut être fait avec request.args.get(). Par exemple, si votre chaîne de requête a un champ date, vous pouvez y accéder à l'aide de 

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

N'oubliez pas d'ajouter "request" à la liste des importations depuis le flacon, , C'est-à-dire.

from flask import request
0
Manan Gouhari