No es obvio por la documentación del matraz sobre cómo obtener la cadena de consulta. Soy nuevo, miré los documentos, no pude encontrar!
Entonces
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
python
flask
query-string
Tampa
fuente
fuente
Respuestas:
fuente
La URL completa está disponible como
request.url
, y la cadena de consulta está disponible comorequest.query_string
.Aquí hay un ejemplo:
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 he tenido que tirar de la cadena sin procesar: Flask tiene mecanismos para acceder a ella de manera abstracta. Debe usarlos a menos que tenga una razón convincente para no hacerlo.
fuente
Werkzeug / Flask ya lo analizó todo por usted. No es necesario volver a hacer el mismo trabajo con urlparse:
La documentación completa para los objetos de solicitud y respuesta se encuentra en Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/
fuente
Podemos hacer esto usando request.query_string.
Ejemplo:
Consideremos view.py
También lo hace más modular utilizando Flask Blueprints - http://flask.pocoo.org/docs/0.10/blueprints/
Consideremos que el nombre se pasa como parte de la cadena de consulta / web_url /? First_name = john
Como puede ver, este es solo un pequeño ejemplo: puede obtener múltiples valores + formatearlos y usarlos o pasarlos al archivo de plantilla.
fuente
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 URL como una cadena de bytes sin procesar (Ref. 1).Ejemplo de uso
request.query_string
:Salida:
Referencias
fuente
Pruebe así para la cadena de consulta:
Salida:
fuente
Todas las formas de la cadena de consulta recuperable del objeto de solicitud de matraz como se describe en O'Reilly Flask Web Devleopment :
Desde el desarrollo web O'Reilly Flask , y como dijo Manan Gouhari anteriormente, primero debe importar la solicitud:
request
es un objeto expuesto por Flask como una variable de contexto llamada (lo has adivinado)request
. Como su nombre lo indica, contiene toda la información que el cliente incluyó en la solicitud HTTP. Este objeto tiene muchos atributos y métodos que puede recuperar y llamar, respectivamente.Tiene bastantes
request
atributos que contienen la cadena de consulta para elegir. Aquí enumeraré cada atributo que contiene de alguna manera la cadena de consulta, así como una descripción del libro de O'Reilly de ese atributo.Primero está
args
cuál es "un diccionario con todos los argumentos pasados en la cadena de consulta de la URL". Entonces, si desea que la cadena de consulta se analice en un diccionario, haría algo como esto:(Como otros han señalado, también puede usar
.get('<arg_name>')
para obtener un valor específico del diccionario)Luego, está el
form
atributo, que no contiene la cadena de consulta, pero que se incluye en parte de otro atributo que sí incluye la cadena de consulta que enumeraré momentáneamente. Primero, sin embargo,form
es "Un diccionario con todos los campos de formulario enviados con la solicitud". Lo digo para decir esto: hay otro atributo de diccionario disponible en el objeto de solicitud de matraz llamadovalues
.values
es "Un diccionario que combina los valores enform
yargs
". Recuperar eso se vería así:(Nuevamente, use
.get('<arg_name>')
para sacar un elemento específico del diccionario)Otra opción es
query_string
"La parte de la cadena de consulta de la URL, como un valor binario sin formato". Ejemplo de eso:Luego, como una ventaja adicional, existe
full_path
cuál es "La ruta y las porciones de cadena de consulta de la URL". Por ejemplo:Y finalmente,
url
"La URL completa solicitada por el cliente" (que incluye la cadena de consulta):Feliz pirateo :)
fuente
Esto se puede hacer usando
request.args.get()
. Por ejemplo, si su cadena de consulta tiene un campodate
, se puede acceder usandoNo olvide agregar "
request
" a la lista de importaciones desde el matraz, es decirfuente
request.args.get()
; Las nuevas respuestas a las preguntas anteriores deben contener algo que no se mencionó antes.Si la solicitud es GET y pasamos algunos parámetros de consulta, entonces,
fuente