Els Blueprints són una característica poderosa de Flask que permeten organitzar el codi de la teva aplicació en components més petits i manejables. Això és especialment útil per a aplicacions grans, ja que facilita la modularització i la reutilització del codi.

Què són els Blueprints?

Els Blueprints són com plantilles per a rutes i vistes que es poden registrar en una aplicació Flask. Permeten dividir l'aplicació en mòduls independents, cadascun amb les seves pròpies rutes, vistes, plantilles i fitxers estàtics.

Avantatges dels Blueprints

  • Modularització: Faciliten la separació de diferents parts de l'aplicació en mòduls independents.
  • Reutilització: Permeten reutilitzar codi en diferents parts de l'aplicació o fins i tot en diferents aplicacions.
  • Mantenibilitat: Fan que el codi sigui més fàcil de mantenir i escalar.

Creació d'un Blueprint

Pas 1: Definir el Blueprint

Primer, crea un fitxer Python per al teu Blueprint. Per exemple, crea un fitxer auth.py per gestionar l'autenticació d'usuaris.

# auth.py
from flask import Blueprint

auth = Blueprint('auth', __name__)

@auth.route('/login')
def login():
    return "Login Page"

@auth.route('/logout')
def logout():
    return "Logout Page"

Pas 2: Registrar el Blueprint

Després, registra el Blueprint en la teva aplicació principal. Això es fa en el fitxer principal de l'aplicació, normalment app.py.

# app.py
from flask import Flask
from auth import auth

app = Flask(__name__)
app.register_blueprint(auth, url_prefix='/auth')

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

Explicació del Codi

  • Definició del Blueprint: auth = Blueprint('auth', __name__) crea un nou Blueprint anomenat auth.
  • Rutes del Blueprint: Les rutes /login i /logout es defineixen dins del Blueprint.
  • Registre del Blueprint: app.register_blueprint(auth, url_prefix='/auth') registra el Blueprint en l'aplicació principal amb el prefix d'URL /auth.

Estructura Recomanada per a Aplicacions Grans

Per a aplicacions grans, és recomanable organitzar el codi en directoris separats per a cada Blueprint. Aquí tens un exemple d'estructura de directoris:

/myapp
    /auth
        __init__.py
        routes.py
        forms.py
        models.py
    /main
        __init__.py
        routes.py
    /templates
        /auth
            login.html
            logout.html
        /main
            index.html
    /static
        /css
        /js
    app.py
    config.py

Exemple de __init__.py per a un Blueprint

# auth/__init__.py
from flask import Blueprint

auth = Blueprint('auth', __name__)

from . import routes

Exemple de routes.py per a un Blueprint

# auth/routes.py
from . import auth

@auth.route('/login')
def login():
    return "Login Page"

@auth.route('/logout')
def logout():
    return "Logout Page"

Registre de Blueprints en l'Aplicació Principal

# app.py
from flask import Flask
from auth import auth as auth_blueprint
from main import main as main_blueprint

app = Flask(__name__)
app.register_blueprint(auth_blueprint, url_prefix='/auth')
app.register_blueprint(main_blueprint)

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

Exercici Pràctic

Objectiu

Crea un Blueprint per gestionar les operacions de perfil d'usuari, incloent les rutes per veure i editar el perfil.

Passos

  1. Crea un directori anomenat profile dins del teu projecte.
  2. Dins del directori profile, crea els fitxers __init__.py i routes.py.
  3. Defineix el Blueprint en __init__.py.
  4. Defineix les rutes view_profile i edit_profile en routes.py.
  5. Registra el Blueprint en l'aplicació principal (app.py).

Solució

profile/__init__.py

from flask import Blueprint

profile = Blueprint('profile', __name__)

from . import routes

profile/routes.py

from . import profile

@profile.route('/view')
def view_profile():
    return "View Profile Page"

@profile.route('/edit')
def edit_profile():
    return "Edit Profile Page"

app.py

from flask import Flask
from profile import profile as profile_blueprint

app = Flask(__name__)
app.register_blueprint(profile_blueprint, url_prefix='/profile')

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

Conclusió

Els Blueprints són una eina essencial per a la modularització i l'organització del codi en aplicacions Flask grans. Permeten dividir l'aplicació en components més petits i manejables, facilitant la mantenibilitat i l'escalabilitat del projecte. Amb els Blueprints, pots crear aplicacions més netes, organitzades i fàcils de gestionar.

Curs de Desenvolupament Web amb Flask

Mòdul 1: Introducció a Flask

Mòdul 2: Conceptes Bàsics de Flask

Mòdul 3: Formularis i Entrada d'Usuari

Mòdul 4: Integració de Bases de Dades

Mòdul 5: Autenticació d'Usuaris

Mòdul 6: Conceptes Avançats de Flask

Mòdul 7: APIs RESTful amb Flask

Mòdul 8: Desplegament i Producció

Mòdul 9: Proves i Millors Pràctiques

Mòdul 10: Extensions i Ecosistema de Flask

© Copyright 2024. Tots els drets reservats