serve - Python Flask ¿Cómo obtener parámetros de una URL?
flask url converters (4)
Los parámetros de la URL están disponibles en request.args
, que es un MultiDict que tiene un método de get
, con parámetros opcionales para el valor default
( default
) y tipo ( type
), que es un llamador que convierte el valor de entrada al formato deseado.
from flask import request
@app.route(''/my-route'')
def my_route():
page = request.args.get(''page'', default = 1, type = int)
filter = request.args.get(''filter'', default = ''*'', type = str)
Ejemplos con el código anterior:
/my-route?page=34 -> page: 34 filter: ''*''
/my-route -> page: 1 filter: ''*''
/my-route?page=10&filter=test -> page: 10 filter: ''test''
/my-route?page=10&filter=10 -> page: 10 filter: ''10''
/my-route?page=*&filter=* -> page: 1 filter: ''*''
En Flask, ¿cómo extraigo parámetros de una URL? ¿Cómo puedo extraer parámetros nombrados de una URL usando frasco y python?
Cuando el usuario accede a esta URL que se ejecuta en mi aplicación de frasco, quiero que el servicio web pueda manejar los parámetros especificados después del signo de interrogación:
http://10.1.1.1:5000/login?username=alex&password=pw1
#I just want to be able to manipulate the parameters
@app.route(''/login'', methods=[''GET'', ''POST''])
def login():
username = request.form[''username'']
print(username)
password = request.form[''password'']
print(password)
Si tiene un solo argumento pasado en la URL, puede hacerlo de la siguiente manera
from flask import request
#url
http://10.1.1.1:5000/login/alex
from flask import request
@app.route(''/login/<username>'', methods=[''GET''])
def login(username):
print(username)
En caso de que tengas múltiples parámetros:
#url
http://10.1.1.1:5000/login?username=alex&password=pw1
from flask import request
@app.route(''/login'', methods=[''GET''])
def login():
username = request.args.get(''username'')
print(username)
password= request.args.get(''password'')
print(password)
Lo que intentaba hacer funciona en el caso de solicitudes POST donde los parámetros se pasan como parámetros de formulario y no aparecen en la URL. En caso de que realmente esté desarrollando una API de inicio de sesión, es recomendable utilizar la solicitud POST en lugar de GET y exponer los datos al usuario.
En caso de solicitud posterior, funcionaría de la siguiente manera:
#url
http://10.1.1.1:5000/login
Fragmento de HTML:
<form action="http://10.1.1.1:5000/login">
Username : <input type="text" name="username"><br>
Password : <input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
Ruta:
from flask import request
@app.route(''/login'', methods=[''POST''])
def login():
username = request.form.get(''username'')
print(username)
password= request.form.get(''password'')
print(password)
También puede usar corchetes <> en la URL de la definición de vista y esta entrada irá a sus argumentos de función de vista
@app.route(''/<name>'')
def my_view_func(name):
return name
Utilice request.args
para obtener el contenido analizado de la cadena de consulta:
from flask import request
@app.route(...)
def login():
username = request.args.get(''username'')
password = request.args.get(''password'')