Python Flask ¿Cómo obtener parámetros de una URL?

En Flask, ¿Cómo extraigo parámetros de una URL? ¿Cómo puedo extraer parámetros nombrados de una URL usando flask y python?

Cuando el usuario accede a esta URL que se ejecuta en mi aplicación de flask, 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) 

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') 

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: '*' 

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('/') def my_view_func(name): return name 

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/', 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:

 
Username :
Password :

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) 

url

 http://0.0.0.0:5000/user/name/ 

código:

 @app.route('/user/< string:name >/', methods=['GET', 'POST']) def user_view(name): print(name)