Prerrequisitos: Fundamentos de Flask
Al crear una aplicación, es bastante engorroso codificar cada URL. Una mejor manera de resolver este problema es mediante la creación de direcciones URL dinámicas. Entendamos brevemente el significado de algunos términos comunes primero.
- Enrutamiento dinámico: es el proceso de obtener datos dinámicos (nombres de variables) en la URL y luego usarlos.
- Reglas variables: las secciones variables se pueden agregar a una URL marcando las secciones con <nombre_variable>.
Primero creemos una aplicación de matraz básica:
Python3
#importing the flask Module from flask import Flask # Flask constructor takes the name of # current module (__name__) as argument app = Flask(__name__) @app.route('/') # ‘/’ URL is bound with hello_world() function. def home(): return 'You are at home page.' @app.route('/allow') def allow(): return 'You have been allowed to enter.' @app.route('/disallow') def disallow(): return 'You have not been allowed to enter.' # main driver function if __name__ == '__main__': # run() method of Flask class runs the application # on the local development server. app.run()
Producción:
Ahora considere una situación en la que tiene muchos usuarios y desea enrutar al usuario a una página específica con su nombre o ID en la URL, así como la plantilla. Si intenta hacer esto manualmente, debe escribir manualmente la URL completa para cada usuario. Hacer esto puede ser muy tedioso y casi imposible. Sin embargo, esto se puede resolver usando el matraz con algo llamado enrutamiento dinámico .
Enrutamiento dinámico
Ahora veremos un mejor enfoque usando Reglas Variables. Agregaremos un <nombre de variable> con cada ruta. Opcionalmente, también podemos definir el convertidor con cada nombre de variable <convertidor: nombre de variable>. De forma predeterminada, el convertidor es String .
Ejemplo:
@app.route('allow/<variable name>') OR @app.route('allow/<converter: variable name>')
Algunos convertidores son:
Cuerda | (predeterminado) acepta cualquier texto sin barra inclinada |
---|---|
En t | acepta enteros positivos |
flotar | acepta valores de coma flotante positivos |
sendero | como string pero también acepta barras |
uuid | acepta strings UUID |
Permitamos que el usuario con una identificación de menos de 25 visite la página. El código modificado con enlace URL dinámico se proporciona a continuación. La función usa el <nombre de la variable> pasado en el decorador route() como argumento.
@app.route('/allow/<int:Number>') def allow(Number): if Number < 25: return f'You have been allowed to enter because\ your number is {str(Number)}' else: return f'You are not allowed'
Python3
#importing the flask Module from flask import Flask # Flask constructor takes the name of # current module (__name__) as argument app = Flask(__name__) @app.route('/') # ‘/’ URL is bound with hello_world() function. def home(): return 'You are at home page.' # Use of <converter: variable name> in the # route() decorator. @app.route('/allow/<int:Number>') def allow(Number): if Number < 25: return f'You have been allowed to enter because your number is {str(Number)}' else: return f'You are not allowed' # main driver function if __name__ == '__main__': # run() method of Flask class runs the application # on the local development server. app.run()
Producción: