Prompt per generar aplicació en Python:
Integració de Flask amb MySQL
Idea de l’aplicació
Per a aquesta tasca s’ha dissenyat una aplicació web de registre i autenticació d’usuaris.
L’aplicació permet que els usuaris:
Es registrin amb les seves dades (nom, correu electrònic i contrasenya)
Iniciïn sessió de manera segura
Mantinguin una sessió activa mentre naveguen per l’aplicació
Accedeixin a contingut personalitzat segons l’usuari autenticat
Aquesta idea s’ha escollit perquè és un cas real molt habitual en aplicacions web i permet demostrar clarament l’ús de Python com a backend.
🔹 Per què utilitzar Python com a backend
Python s’utilitza com a llenguatge de backend perquè permet gestionar tota la lògica de negoci de l’aplicació, és a dir, totes les operacions que no es poden fer només amb HTML.
En aquesta aplicació, Python s’encarrega de:
Validar les dades introduïdes pels usuaris
Comprovar si un usuari existeix a la base de dades
Gestionar l’inici i el tancament de sessions
Processar peticions del client i retornar respostes dinàmiques
Per implementar el backend s’utilitza el framework Flask, que permet crear aplicacions web lleugeres i eficients amb Python.
🔹 Diferència entre una web estàtica i una
web dinàmica
Una web estàtica, creada només amb HTML i CSS, mostra sempre el mateix contingut a tots els usuaris i no pot gestionar dades ni sessions.
En canvi, aquesta aplicació és una web dinàmica, ja que:
El contingut canvia segons l’usuari que ha iniciat sessió
Les dades s’obtenen d’una base de dades
Les respostes es generen en temps real des del servidor
Aquesta funcionalitat només és possible gràcies a l’ús de Python al servidor, que processa les peticions abans d’enviar la resposta al navegador.
🔹 Connexió amb base de dades
L’aplicació es connecta a una base de dades MySQL per emmagatzemar la informació dels usuaris.
Aquesta base de dades conté, entre altres, una taula d’usuaris amb camps com:
Identificador d’usuari
Nom
Correu electrònic
Contrasenya (emmagatzemada de forma segura)
La connexió amb la base de dades es gestiona mitjançant SQLAlchemy, una llibreria que facilita la comunicació entre Python i MySQL i permet treballar amb dades de forma estructurada i segura.
🔹 Gestió de sessions
Per controlar l’autenticació dels usuaris, l’aplicació utilitza sessions.
Les sessions permeten:
Mantenir l’usuari identificat mentre navega per diferents pàgines
Evitar que un usuari no autenticat accedeixi a zones restringides
Millorar la seguretat i l’experiència d’usuari
Aquesta gestió de sessions és una tasca pròpia del backend i demostra clarament la necessitat d’utilitzar Python en lloc d’una solució purament estàtica.
🔹 Escalabilitat i manteniment
L’ús de Python i Flask permet crear una aplicació modular i escalable, de manera que en el futur es podrien afegir noves funcionalitats com:
Recuperació de contrasenya
-
Rols d’usuari (administrador, usuari normal)
-
Integració amb altres serveis
Recuperació de contrasenya
Rols d’usuari (administrador, usuari normal)
Integració amb altres serveis
Aquesta estructura facilita el manteniment del codi i segueix bones pràctiques de desenvolupament web.
🔹 Arquitectura general de l’aplicació
Arquitectura general de l’aplicació
Les principals parts de l’aplicació són:
-
Gestió de rutes (routes)
-
Lògica de negoci
-
Connexió amb la base de dades
-
Gestió de sessions d’usuari
🔹 Estructura de carpetes del projecte
El projecte està organitzat de la següent manera:
projecte_login/
│
├── app.py
├── config.py
├── models.py
├── routes.py
├── requirements.txt
└── templates/
├── login.html
├── register.html
└── dashboard.html
Descripció dels fitxers:
-
app.py: fitxer principal que inicia l’aplicació Flask
-
config.py: configuració de la base de dades i sessions
-
models.py: definició dels models de la base de dades
-
routes.py: rutes i funcionalitats de l’aplicació
-
templates/: pàgines HTML dinàmiques
-
requirements.txt: llibreries necessàries del projecte
app.py: fitxer principal que inicia l’aplicació Flask
config.py: configuració de la base de dades i sessions
models.py: definició dels models de la base de dades
routes.py: rutes i funcionalitats de l’aplicació
templates/: pàgines HTML dinàmiques
requirements.txt: llibreries necessàries del projecte
Aquesta organització segueix bones pràctiques de desenvolupament backend.
v
🔹 Implementació : codi Python
1. Configuració de l’Estructura de Fitxers
El primer pas va ser organitzar el projecte de manera professional. En lloc d’un sol fitxer, hem creat una arquitectura modular.
Acció: Creació de la carpeta principal projecte_login i la subcarpeta templates.
Fitxers creats: app.py, config.py, models.py, routes.py i requirements.txt.
Correcció tècnica: Vam detectar i corregir un error d’extensions duplicades (ex: app.py.py) per assegurar que el sistema reconegués els scripts de Python correctament.
🔹. Definició del Model de Dades (Backend)
Hem definit com serà l’usuari a la nostra base de dades utilitzant SQLAlchemy.
Acció: Al fitxer
models.py, hem creat la classeUseramb els camps:id,username,emailipassword.Connexió: Al fitxer
config.py, hem configurat la ruta de connexió cap al servidor local XAMPP (mysql+pymysql://root:@localhost/lan_party_db).
3. Desenvolupament del Frontend (Interfície)
Dins de la carpeta templates, hem creat la part visual que l’usuari final veurà.
Acció: Creació de
login.html.Disseny: Hem utilitzat HTML5 i CSS per donar-li un estil “Gaming/Hacker” amb colors negres i neó verd, adequat per a una LAN Party.
4. Execució i Prova del Servidor
Finalment, hem posat en marxa l’aplicació per comprovar que tot funciona.
Acció: Hem utilitzat el Terminal integrat de VS Code.
Comanda:
python app.py.Resultat: El servidor s’ha aixecat correctament a l’adreça local
http://127.0.0.1:5000
Llistat de Llibreries
Flask
Microframework web principal.
SQLAlchemy
ORM per gestionar la base de dades sense SQL manual.
PyMySQL
| Driver per connectar Python amb XAMPP (MySQL). |
| Camp (Field) | Tipus (Type) | Descripció |
|---|---|---|
| id | INT | Clau primària (Auto-increment) |
| username | VARCHAR(50) | Nom d’usuari per l’accés |
| VARCHAR(100) | Correu electrònic del participant | |
| password | VARCHAR(255) | Contrasenya encriptada (Hash) |
Arquitectura de Dades i Persistència amb Flask