python - ejemplos - ¿Cómo se obtiene una cadena de consulta en Flask?
django (4)
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.
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")
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 es necesario 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/
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'')