Saltar al contenido
Creación de Aplicaciones Web con Flask y Python

Manejo de rutas y vistas en Flask

Introducción

Flask: Manejo de Rutas y Vistas

Flask es un framework de Python utilizado para el desarrollo de aplicaciones web. El manejo de rutas y vistas en Flask es una parte importante del proceso de creación de una aplicación web.

Las rutas en Flask se definen por medio de los decoradores @app.route(), donde se especifica la URL que activará la vista. Por ejemplo, @app.route('/inicio') se activará cuando se ingrese a la URL "http://localhost:5000/inicio".

Las vistas son funciones de Python que se vinculan a una ruta en Flask. Al ser activada una URL, Flask ejecutará la función correspondiente y devolverá su resultado al navegador. Las vistas pueden utilizar plantillas HTML, bases de datos y otros recursos para generar contenido dinámico.

En Flask, las rutas pueden incluir parámetros, que se especifican con "<nombre>". Por ejemplo, @app.route('/usuario/<nombre>') se activará cuando se ingrese a la URL "http://localhost:5000/usuario/Juan", pasando el parámetro "Juan" a la vista correspondiente.

El manejo de rutas y vistas en Flask es fundamental para crear aplicaciones web dinámicas y personalizadas.

Resumen

En Flask, una ruta corresponde a una URL que envía una solicitud HTTP a nuestra aplicación web. Mientras que, una vista es la función que se ejecuta para procesar esa solicitud. La relación entre rutas y vistas es uno a uno, lo que significa que cada ruta en nuestra aplicación debe tener una vista vinculada o asignada a ella. Para manejar rutas y vistas en Flask, utilizamos el decorador @app.route(). Este decorador define la ruta que debe manejar nuestra vista. Por ejemplo, supongamos que queremos manejar la ruta /home en nuestra aplicación. Podemos crear la vista para esta ruta de la siguiente manera:

from flask import Flask
app = Flask(__name__)

@app.route('/home')
def home():
    return 'Bienvenido a la página principal'

En este código, hemos definido una nueva ruta llamada /home con el decorador @app.route(). Además, hemos creado la vista home() para manejar la solicitud a esta ruta. La vista simplemente devuelve un mensaje de bienvenida en forma de texto.

También podemos utilizar variables en las rutas utilizando la sintaxis <tipo:nombre_variable>, donde "tipo" es el tipo de variable (por ejemplo, "int" o "string"), y "nombre_variable" es el nombre de la variable que se va a recibir en la vista correspondiente. Por ejemplo:

@app.route('/usuario/<string:nombre>')
def usuario(nombre):
    return 'Bienvenido, %s' % nombre

En este caso, hemos definido una ruta /usuario/, lo que significa que cualquier cadena después de /usuario/ se asignará a la variable nombre en nuestra vista. En la vista usuario(), utilizamos la cadena %s para agregar el valor de nombre a nuestro mensaje de bienvenida.

En resumen, el manejo de rutas y vistas en Flask implica definir las rutas que nuestra aplicación debe manejar con el decorador @app.route(), y luego crear una vista que procese la solicitud a esa ruta.

Aplicación teórica

Imaginemos que estás desarrollando una aplicación web de una tienda online y necesitas manejar diferentes rutas y vistas para el funcionamiento del sitio. Para empezar, podrías tener una ruta /inicio que muestre la página principal de la tienda. Para crear esta ruta en Flask, podrías hacer lo siguiente:

from flask import Flask
app = Flask(__name__)

@app.route('/inicio')
def inicio():
    return 'Bienvenido a nuestra tienda en línea'

if __name__ == '__main__':
    app.run()

Este código define una ruta /inicio que muestra un mensaje de bienvenida.

Además, podrías tener una ruta /productos que muestre una lista de los productos que ofrece la tienda. Para esto, podrías definir una vista que consulte los datos de los productos y los muestre en una plantilla HTML, utilizando el motor de plantillas Jinja2 que viene integrado en Flask. Así, el código podría verse así:

from flask import Flask, render_template
app = Flask(__name__)

productos = ['producto 1', 'producto 2', 'producto 3']

@app.route('/inicio')
def inicio():
    return 'Bienvenido a nuestra tienda en línea'

@app.route('/productos')
def lista_productos():
    return render_template('productos.html', productos=productos)

if __name__ == '__main__':
    app.run()

En este código, la vista lista_productos consulta la lista de productos y los envía como contexto a la plantilla productos.html, que muestra la lista en formato HTML. Esta plantilla podría tener el siguiente contenido:

<p>Productos</p>

<h1>Lista de productos</h1>

<ul>
    {% for producto in productos %}
    <li>{{ producto }}</li>
    {% endfor %}
</ul>

De esta manera, cuando el usuario acceda a la ruta /productos, verá la lista de productos en su navegador. Con Flask y el motor de plantillas Jinja2, puedes crear un sitio web dinámico y escalable de manera sencilla y eficiente.

Aplicación práctica

Un ejemplo de cómo puedes crear una ruta y su correspondiente vista en Flask usando Python. En este caso, crearemos una pequeña aplicación que muestra un mensaje de bienvenida en el navegador cuando accedemos a la página principal.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', message='¡Bienvenido a mi sitio web!')

if __name__ == '__main__':
    app.run(debug=True)

Esto es lo que hace el código:

  • Definimos una nueva aplicación Flask y le damos el nombre app.
  • Creamos una nueva ruta a través del decorador @app.route('/'). Esto indica que esta ruta gestionará las solicitudes de la página principal (en este caso, el localhost:5000/).
  • Asociamos esta ruta con una función llamada home(), que devuelve el contenido que mostrará en el navegador cuando se acceda a la ruta.
  • La función home() utiliza la función render_template() de Flask para mostrar una plantilla HTML con el mensaje de bienvenida.
  • Finalmente, iniciamos la aplicación con app.run(debug=True).

Este es solo un ejemplo básico de cómo se puede manejar rutas y vistas en Flask. Hay muchas posibilidades y personalizaciones que se pueden hacer para crear aplicaciones web más avanzadas.