Flask es un microframework web para Python que permite a los desarrolladores construir aplicaciones web de manera rápida y sencilla. A diferencia de otros frameworks más grandes como Django, Flask es ligero y flexible, lo que lo hace ideal para proyectos pequeños y medianos. En esta sección, aprenderás los conceptos básicos de Flask, cómo configurar un proyecto y cómo crear tu primera aplicación web.

Contenido

Introducción a Flask

Flask es conocido por su simplicidad y facilidad de uso. Es un microframework porque no incluye muchas de las funcionalidades que otros frameworks más grandes tienen por defecto, como un ORM (Object-Relational Mapping) o un sistema de autenticación. Sin embargo, Flask es altamente extensible y permite agregar estas funcionalidades según sea necesario.

Características Principales de Flask:

  • Ligero y Flexible: Permite a los desarrolladores elegir las herramientas y bibliotecas que necesitan.
  • Extensible: Puedes agregar extensiones para funcionalidades adicionales.
  • Simplicidad: Ideal para aprender y construir aplicaciones rápidamente.

Instalación de Flask

Para instalar Flask, necesitas tener Python y pip (el gestor de paquetes de Python) instalados en tu sistema. Puedes instalar Flask utilizando el siguiente comando:

pip install Flask

Estructura de un Proyecto Flask

Un proyecto Flask típico tiene una estructura simple. Aquí hay un ejemplo de cómo podría verse:

my_flask_app/
│
├── app.py
├── templates/
│   └── index.html
└── static/
    └── style.css
  • app.py: El archivo principal de la aplicación.
  • templates/: Carpeta donde se almacenan las plantillas HTML.
  • static/: Carpeta para archivos estáticos como CSS, JavaScript e imágenes.

Creación de una Aplicación Básica

Vamos a crear una aplicación básica en Flask. Abre tu editor de texto favorito y crea un archivo llamado app.py con el siguiente contenido:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "¡Hola, Mundo!"

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

Explicación del Código:

  • from flask import Flask: Importa la clase Flask del módulo flask.
  • app = Flask(__name__): Crea una instancia de la clase Flask.
  • @app.route('/'): Define una ruta para la URL raíz (/).
  • def home(): Define una función que se ejecutará cuando se acceda a la URL raíz.
  • app.run(debug=True): Ejecuta la aplicación en modo de depuración.

Para ejecutar la aplicación, abre una terminal y navega hasta el directorio donde se encuentra app.py, luego ejecuta:

python app.py

Abre tu navegador web y ve a http://127.0.0.1:5000/. Deberías ver el mensaje "¡Hola, Mundo!".

Rutas y Vistas

Las rutas en Flask se definen utilizando el decorador @app.route. Cada ruta está asociada a una función que devuelve una respuesta. Aquí hay un ejemplo con múltiples rutas:

@app.route('/')
def home():
    return "¡Hola, Mundo!"

@app.route('/about')
def about():
    return "Acerca de Nosotros"

Explicación del Código:

  • @app.route('/about'): Define una ruta para la URL /about.
  • def about(): Define una función que se ejecutará cuando se acceda a la URL /about.

Plantillas con Jinja2

Flask utiliza Jinja2 como su motor de plantillas. Las plantillas permiten generar HTML dinámico. Crea un archivo llamado index.html en la carpeta templates con el siguiente contenido:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Mi Aplicación Flask</title>
</head>
<body>
    <h1>{{ mensaje }}</h1>
</body>
</html>

Luego, modifica app.py para renderizar esta plantilla:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', mensaje="¡Hola, Mundo!")

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

Explicación del Código:

  • from flask import render_template: Importa la función render_template para renderizar plantillas.
  • return render_template('index.html', mensaje="¡Hola, Mundo!"): Renderiza la plantilla index.html y pasa la variable mensaje a la plantilla.

Ejercicio Práctico

Ejercicio:

  1. Crea una nueva ruta /contact que renderice una plantilla contact.html.
  2. En contact.html, muestra un formulario simple con campos para nombre y mensaje.
  3. Modifica app.py para manejar la lógica de mostrar y procesar el formulario.

Solución:

contact.html:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Contacto</title>
</head>
<body>
    <h1>Contacto</h1>
    <form method="post">
        <label for="name">Nombre:</label>
        <input type="text" id="name" name="name">
        <br>
        <label for="message">Mensaje:</label>
        <textarea id="message" name="message"></textarea>
        <br>
        <button type="submit">Enviar</button>
    </form>
</body>
</html>

app.py:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', mensaje="¡Hola, Mundo!")

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        name = request.form['name']
        message = request.form['message']
        return f"Gracias, {name}. Hemos recibido tu mensaje: {message}"
    return render_template('contact.html')

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

Explicación del Código:

  • from flask import request: Importa el objeto request para manejar datos de formularios.
  • @app.route('/contact', methods=['GET', 'POST']): Define una ruta que acepta métodos GET y POST.
  • if request.method == 'POST': Verifica si el método de la solicitud es POST.
  • name = request.form['name']: Obtiene el valor del campo name del formulario.
  • message = request.form['message']: Obtiene el valor del campo message del formulario.

Conclusión

En esta sección, has aprendido los fundamentos del framework Flask, incluyendo cómo instalarlo, crear una aplicación básica, definir rutas y vistas, y trabajar con plantillas Jinja2. También has completado un ejercicio práctico para reforzar estos conceptos. En la próxima sección, profundizaremos en la construcción de APIs REST con Flask, lo que te permitirá crear aplicaciones web más complejas y funcionales.

Curso de Programación en Python

Módulo 1: Introducción a Python

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados