Cuando el usuario accede a esta URL que se ejecuta en mi aplicación de matraz, 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)
python
web-services
flask
url-parameters
Alex Stone
fuente
fuente
Respuestas:
Use
request.args
para obtener el contenido analizado de la cadena de consulta:fuente
app.route('/username=<username>&password=<password>')
? De esa manera no escribes las líneas request.args.get en absoluto.?
al comienzo de los parámetros, por lo que desearíaapp.route('/?username=<username>&password=<password>')
, pero Flask leerá todo después del signo de interrogaciónrequest.args
y no interpretará las variables de la ruta. Si desea llegar a su ruta de ejemplo utilizando un formulario HTML, necesitaría un montón de JavaScript adicional para que funcione. Por último, las variables de ruta son obligatorias,request.args
pueden ser opcionales.Los parámetros de URL están disponibles en
request.args
, que es un ImmutableMultiDict que tiene unget
método, con parámetros opcionales para el valor predeterminado (default
) y el tipo (type
), que es invocable y convierte el valor de entrada al formato deseado. (Consulte la documentación del método para obtener más detalles).Ejemplos con el código anterior:
fuente
filter
es una palabra reservada, no debe usar;)También puede usar corchetes <> en la URL de la definición de vista y esta entrada irá a los argumentos de la función de vista
fuente
Si tiene un único argumento pasado en la URL, puede hacerlo de la siguiente manera
En caso de que tenga múltiples parámetros:
Lo que intentaba hacer funciona en 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 que utilice la solicitud POST en lugar de GET y exponga los datos al usuario.
En caso de solicitud posterior, funcionaría de la siguiente manera:
Fragmento de HTML:
Ruta:
fuente
url:
código:
(Editar: espacios eliminados en cadena de formato)
fuente
Es muy simple Déjame dividir este proceso en dos simples pasos.
En la plantilla html, declarará la etiqueta de nombre de usuario y contraseña como
Luego, modifique su código como:
fuente
Use
request.args.get(param)
, por ejemplo:Aquí está el enlace referenciado al código.
fuente