Introducción
Las aplicaciones web modernas utilizan URLs significativas para ayudar a los usuarios. Los usuarios tienen más probabilidades de gustar de una página y volver si la página utiliza una URL significativa que puedan recordar y utilizar para visitar directamente una página. En este laboratorio, nos centraremos en cómo implementar URLs dinámicas y adjuntar múltiples reglas a una función en Flask.
Decorador de ruta
En este paso, utilizará el decorador route() para enlazar múltiples funciones de vista con múltiples URLs.
- Abra el archivo
route_decorator.py, importe la claseFlasky cree una instancia de la misma.
from flask import Flask
app = Flask(__name__)
- A continuación, usamos el decorador
route()para crear dos rutas,/y/hello, enlazar las funciones de vista correspondientes, y hacer que devuelvan Página de índice y Hola, Mundo respectivamente.
@app.route('/')
def index():
return 'Página de índice'
@app.route('/hello')
def hello():
return 'Hola, Mundo'
- Crear un punto de entrada
maindel script para iniciar la aplicación Flask en el puerto 5000, habilitando el mododebug.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
- Para ejecutar la aplicación, primero use los siguientes comandos para lanzar la aplicación Flask en la terminal:
python3 route_decorator.py
Luego abra la pestaña "Web 5000" ubicada en la parte superior de la interfaz, actualice la página y podrá ver el mensaje Página de índice.
Para la ruta /hello, puede agregar el sufijo hello directamente en la barra de direcciones superior.

Luego la página mostrará el mensaje Hola, Mundo.
Reglas variables
En este paso, agregará secciones variables a una URL marcando secciones con <nombre_variable>. Opcionalmente, puede usar un conversor para especificar el tipo del argumento como <conversor:nombre_variable>.
- Abra el archivo
variable_rules.py, primero importe la claseFlaskyescape, luego cree una instancia de la claseFlask.
from flask import Flask
from markupsafe import escape
app = Flask(__name__)
- En el decorador
route(), agregue patrones<nombre_variable>y<conversor:nombre_variable>para crear URLs dinámicas con secciones variables. Haga que las funciones de vista devuelvan cadenas formateadas.
@app.route('/user/<username>')
def show_user_profile(username):
## muestra el perfil del usuario para ese usuario
return f'Usuario {escape(username)}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
## muestra el post con el id dado, el id es un entero
return f'Post {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
## muestra el subcamino después de /path/
return f'Subcamino {escape(subpath)}'
- A continuación, hay una tabla de los tipos de conversores comunes:
| Tipo | Rol |
|---|---|
string |
(predeterminado) acepta cualquier texto sin barra diagonal |
int |
acepta enteros positivos |
float |
acepta valores de punto flotante positivo |
path |
como string pero también acepta barras diagonales |
uuid |
acepta cadenas UUID |
- Crear un punto de entrada
maindel script para iniciar la aplicación Flask en el puerto 5001, habilitando el mododebug.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5001, debug=True)
- Para ejecutar la aplicación, primero use los siguientes comandos para lanzar la aplicación Flask en una nueva terminal:
python3 variable_rules.py
Luego abra la pestaña "Web 5001" ubicada en la parte superior de la interfaz, agregue el sufijo user/Alice directamente en la barra de direcciones superior.

Luego la página mostrará el mensaje Usuario Alice.
- También puede repetir las mismas operaciones para los sufijos
post/1ypath/some/path. Para el sufijopost/1, muestra el mensaje Post 1. Para el sufijopath/some/path, muestra el mensaje Subcamino some/path.
Comportamiento de redirección
En este paso, aprenderá dos reglas que difieren en el uso de una barra diagonal final.
- Abra el archivo
redirection_behavior.py, importe la claseFlasky cree una instancia de la misma.
from flask import Flask
app = Flask(__name__)
- Utilice el decorador
route()para crear una ruta llamada/projects/con una función de vista llamadaprojects.
@app.route('/projects/')
def projects():
return 'La página de proyectos'
La URL canónica para el punto final projects tiene una barra diagonal final. Es similar a una carpeta en un sistema de archivos. Si accede a la URL sin la barra diagonal final (/projects), Flask lo redirige a la URL canónica con la barra diagonal final (/projects/).
- Cree otra ruta llamada
/aboutcon una función de vista llamadaabout.
@app.route('/about')
def about():
return 'La página Acerca de'
La URL canónica para el punto final about no tiene una barra diagonal final. Es similar al nombre de ruta de un archivo. Acceder a la URL con una barra diagonal final (/about/) produce un error 404 No encontrado. Esto ayuda a mantener las URLs únicas para estos recursos, lo que ayuda a los motores de búsqueda a evitar indexar la misma página dos veces.
- Crear un punto de entrada
maindel script para iniciar la aplicación Flask en el puerto 5002, habilitando el mododebug.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5002, debug=True)
- Para ejecutar la aplicación, primero use los siguientes comandos para lanzar la aplicación Flask en una nueva terminal:
python3 redirection_behavior.py
Luego abra la pestaña "Web 5002" ubicada en la parte superior de la interfaz, agregue el sufijo projects directamente en la barra de direcciones superior.

Luego la página mostrará el mensaje La página de proyectos, porque se redirige a la ruta /projects/.
Agregue otro sufijo about/ en lugar de projects:

Debería ver el mensaje No encontrado, lo que indica un error 404. Cambie el sufijo a about, luego podrá ver el mensaje correcto La página Acerca de.
Construcción de URL
En este paso, utilizará la función url_for() para construir una URL a una función específica. Toma el nombre de la función como primer argumento y un número ilimitado de argumentos de palabras clave, cada uno correspondiente a una parte variable de la regla de URL. Las partes variables desconocidas se anexan a la URL como parámetros de consulta.
- Abra el archivo
url_building.py, e importe primero la claseFlaskyurl_for. No olvide también crear una instancia de la claseFlask.
from flask import Flask, url_for
app = Flask(__name__)
- Utilice el decorador
route()para crear tres rutas y definir las funciones de vista correspondientes.
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return f'{username}\'s profile'
- Usamos el método
test_request_context()para probarurl_for(). Le dice a Flask que actúe como si estuviera manejando una solicitud incluso mientras usamos una shell de Python.
with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe'))
url_for('index')genera una URL para la función de vistaindex, resultando en/.url_for('login')genera una URL para la función de vistalogin, resultando en/login.url_for('login', next='/')genera una URL para la función de vistaloginy incluye un parámetro de consulta adicionalnext, resultando en/login?next=/.url_for('profile', username='John Doe')genera una URL para la función de vistaprofilecon la variable de nombre de usuario establecida enJohn Doe, resultando en/user/John%20Doe
- Ejecute directamente el archivo
url_building.pyen una nueva terminal:
python3 url_building.py
debería mostrar:
/
/login
/login?next=/
/user/John%20Doe
Resumen
En este laboratorio, hemos aprendido varios métodos para crear URLs significativas, lo cual es muy importante al diseñar una aplicación web. Al utilizar habilmente las capacidades de enrutamiento de Flask, puede crear URLs organizadas e intuitivas que mejoran la experiencia del usuario.



