L’ús de Python com a motor de Backend
L’elecció de Python, i concretament del framework Flask, respon a la necessitat de transformar una web estàtica en una eina interactiva i intel·ligent. Mentre que un fitxer HTML estàtic es limita a mostrar la mateixa informació a tots els usuaris, un backend en Python actua com el cervell del sistema. La seva funció principal és connectar la lògica de negoci (les regles de funcionament de la teva aplicació) amb la base de dades MySQL.
Python destaca per la seva capacitat de processar dades dinàmiques. Això permet que el contingut de la web canviï en temps real segons les accions de l’usuari o les consultes a la base de dades. A més, a diferència de l’HTML pur, Python permet la gestió de sessions, cosa que fa possible que el servidor reconegui un usuari concret, recordi les seves preferències o mantingui el seu accés segur mentre navega per diferents seccions. Pel que fa a l’escalabilitat, l’arquitectura modular de Python facilita que l’aplicació creixi en funcions i volum de dades sense haver de reescriure el codi des de zero.
Aplicació Flask amb connexió a MySQL
Aquest codi segueix els estàndards PEP8 i utilitza SQLAlchemy per a una gestió eficient de la base de dades. Està estructurat de manera que la lògica de les rutes i la definició del model estiguin clares.
Primer, instal·la les llibreries necessàries: pip install flask flask_sqlalchemy pymysql
Codi de l’aplicació (app.py):
from flask import Flask, render_template, request, redirect, url_for, session from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
Configuració de seguretat i base de dades
app.secret_key = 'clau_secreta_per_a_sessions' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://usuari:contrasenya@localhost/nom_base_dades' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
Definició del model de dades (Lògica de Negoci)
class Usuari(db.Model): id = db.Column(db.Integer, primary_key=True) nom = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<Usuari {self.nom}>'
Funcions de rutes (Controladors)
@app.route('/') def inici(): usuaris = Usuari.query.all() return render_template('index.html', usuaris=usuaris)
@app.route('/afegir', methods=['POST']) def afegir_usuari(): nom = request.form.get('nom') email = request.form.get('email')
if nom and email:
nou_usuari = Usuari(nom=nom, email=email)
db.session.add(nou_usuari)
db.session.commit()
return redirect(url_for('inici'))
@app.route('/login', methods=['POST']) def login(): session['usuari'] = request.form.get('nom') return redirect(url_for('inici'))
if name == 'main': with app.app_context(): db.create_all() # Crea les taules si no existeixen app.run(debug=True)
Estructura i documentació del portafolis
Perquè el portafolis sigui professional i compleixi els criteris de documentació, has d’organitzar la informació de manera jeràrquica.
Pàgina Directori (Index Principal) Aquesta pàgina és la porta d’entrada. Ha d’incloure un llistat clar amb enllaços funcionals a les seccions de cada integrant de l’equip. Es recomana utilitzar una taula o una llista neta on aparegui el nom de l’integrant, el seu rol en el projecte i l’enllaç directe a la seva documentació personal.
Documentació de Reptes i Evidències Cada apartat del projecte ha d’estar acompanyat de proves visuals. No n’hi ha prou amb posar el codi; cal explicar què s’està veient. Les captures de pantalla han de mostrar el codi funcionant, la base de dades MySQL amb les dades inserides i la interfície web resultant. Si es presenta un vídeo, aquest ha de ser breu i mostrar el flux complet: des que l’usuari introdueix una dada fins que aquesta apareix reflectida a la base de dades gràcies a la lògica de Python.
Organització de fitxers És important que el repositori o el lloc web del portafolis tingui una estructura de carpetes lògica. Per exemple, una carpeta per a “codi”, una altra per a “imatges” i una secció de “documentació” on s’expliqui el pas a pas de la instal·lació i configuració de l’entorn de treball (Python, Flask i MySQL).
