¿Cómo se obtiene una cadena de consulta en Flask?

No es obvio a partir de la documentación del matraz sobre cómo obtener la cadena de consulta. Soy nuevo, miré los documentos, no pude encontrar!

Asi que

@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 (ie ?user=some-value) user = request.args.get('user') 

La URL completa está disponible como request.url , y la cadena de consulta está disponible como request.query_string .

Aquí hay un ejemplo:

 from flask import request @app.route('/adhoc_test/') def adhoc_test(): return request.query_string 

Para acceder a un parámetro conocido individual pasado en la cadena de consulta, puede usar request.args.get('param') . Esta es la forma “correcta” de hacerlo, que yo sepa.

ETA: antes de continuar, debe preguntarse por qué desea la cadena de consulta. Nunca tuve que tirar de la cadena en bruto: Flask tiene mecanismos para acceder a ella de forma abstracta. Debe usarlos a menos que tenga una razón convincente para no hacerlo.

Podemos hacer esto usando request.query_string.

Ejemplo:

Consideremos 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()) 

También lo hace más modular utilizando Flask Blueprints – http://flask.pocoo.org/docs/0.10/blueprints/

Consideremos que el primer nombre se pasa como parte de la cadena de consulta / 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 

Como ve, esto es solo un pequeño ejemplo: puede obtener múltiples valores + formateos y usarlos o pasarlos al archivo de plantilla.

Werkzeug / Flask ya lo analizó todo para ti. No hace falta volver a hacer el mismo trabajo con 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 documentación completa de los objetos de solicitud y respuesta se encuentra en Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/

Vine aquí buscando la cadena de consulta, no cómo obtener valores de la cadena de consulta.

request.query_string devuelve los parámetros de la URL como una cadena de bytes sin procesar (Ref 1).

Ejemplo de uso 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 __name__ == '__main__': app.run(debug=True) 

Salida:

Parámetros de consulta en ruta matraz

Referencias:

  1. Documentación oficial de la API en query_string

Esto se puede hacer usando request.args.get() . Por ejemplo, si la cadena de consulta tiene una date campo, se puede acceder usando

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

No olvide agregar ” request ” a la lista de importaciones desde el matraz, es decir,

 from flask import request