Generación de URL dinámicas en Flask

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:

Publicación traducida automáticamente

Artículo escrito por nityaak5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *