Flask es un microframework muy flexible y extensible, lo que permite a los desarrolladores agregar funcionalidades adicionales a través de extensiones. Estas extensiones son paquetes de terceros que se integran perfectamente con Flask y proporcionan características adicionales que no están incluidas en el núcleo del framework. En esta sección, exploraremos algunas de las extensiones más populares y útiles para el desarrollo con Flask.

  1. Flask-SQLAlchemy

Descripción

Flask-SQLAlchemy es una extensión que simplifica el uso de SQLAlchemy, un ORM (Object-Relational Mapping) para Python, con Flask. Proporciona una forma fácil de interactuar con bases de datos relacionales.

Instalación

pip install Flask-SQLAlchemy

Ejemplo de Uso

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

@app.route('/')
def index():
    return 'Hello, Flask-SQLAlchemy!'

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

  1. Flask-Migrate

Descripción

Flask-Migrate es una extensión que utiliza Alembic para manejar migraciones de bases de datos en aplicaciones Flask que usan SQLAlchemy.

Instalación

pip install Flask-Migrate

Ejemplo de Uso

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

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

  1. Flask-WTF

Descripción

Flask-WTF integra WTForms con Flask, proporcionando una forma sencilla de manejar formularios web, incluyendo validación y protección contra CSRF (Cross-Site Request Forgery).

Instalación

pip install Flask-WTF

Ejemplo de Uso

from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        name = form.name.data
        return f'Hello, {name}!'
    return render_template('index.html', form=form)

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

  1. Flask-Login

Descripción

Flask-Login proporciona un sistema de gestión de usuarios para aplicaciones Flask, facilitando la implementación de autenticación y manejo de sesiones de usuario.

Instalación

pip install Flask-Login

Ejemplo de Uso

from flask import Flask, render_template, redirect, url_for, request
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'
login_manager = LoginManager(app)
login_manager.login_view = 'login'

class User(UserMixin):
    def __init__(self, id):
        self.id = id

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user_id = request.form['user_id']
        user = User(user_id)
        login_user(user)
        return redirect(url_for('protected'))
    return render_template('login.html')

@app.route('/protected')
@login_required
def protected():
    return f'Logged in as: {current_user.id}'

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('login'))

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

  1. Flask-Mail

Descripción

Flask-Mail facilita el envío de correos electrónicos desde una aplicación Flask, integrándose con varios servidores de correo.

Instalación

pip install Flask-Mail

Ejemplo de Uso

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = 'your-password'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False

mail = Mail(app)

@app.route('/send-mail')
def send_mail():
    msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
    msg.body = 'This is a test email sent from a Flask application!'
    mail.send(msg)
    return 'Mail sent!'

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

Conclusión

Las extensiones de Flask son herramientas poderosas que pueden simplificar y mejorar el desarrollo de aplicaciones web. En esta sección, hemos cubierto algunas de las extensiones más populares, incluyendo Flask-SQLAlchemy, Flask-Migrate, Flask-WTF, Flask-Login y Flask-Mail. Cada una de estas extensiones proporciona funcionalidades específicas que pueden ser integradas fácilmente en tus proyectos Flask, permitiéndote construir aplicaciones más robustas y funcionales.

En el siguiente tema, exploraremos cómo usar Flask-Mail para enviar correos electrónicos desde tu aplicación Flask.

Curso de Desarrollo Web con Flask

Módulo 1: Introducción a Flask

Módulo 2: Conceptos Básicos de Flask

Módulo 3: Formularios y Entrada de Usuario

Módulo 4: Integración de Bases de Datos

Módulo 5: Autenticación de Usuarios

Módulo 6: Conceptos Avanzados de Flask

Módulo 7: APIs RESTful con Flask

Módulo 8: Despliegue y Producción

Módulo 9: Pruebas y Mejores Prácticas

Módulo 10: Extensiones y Ecosistema de Flask

© Copyright 2024. Todos los derechos reservados