En aquest tema, aprendrem com Flask gestiona les rutes i el mapeig d'URL. L'enrutament és un concepte fonamental en el desenvolupament web, ja que permet definir com les URL de la teva aplicació corresponen a les funcions que s'executen quan aquestes URL són sol·licitades.
Conceptes Clau
- Ruta (Route): Una ruta és una URL específica que l'aplicació pot reconèixer i respondre.
- Funció de Vista (View Function): És la funció que s'executa quan es sol·licita una ruta específica.
- Decorador
@app.route
: Utilitzat per associar una URL amb una funció de vista.
Creant una Ruta Bàsica
Exemple de Codi
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Benvingut a la pàgina principal!" if __name__ == '__main__': app.run(debug=True)
Explicació
-
Importació i Inicialització:
from flask import Flask app = Flask(__name__)
- Importem la classe
Flask
del paquetflask
. - Creem una instància de l'aplicació Flask.
- Importem la classe
-
Definició de la Ruta:
@app.route('/') def home(): return "Benvingut a la pàgina principal!"
- Utilitzem el decorador
@app.route('/')
per definir una ruta per a la URL arrel (/
). - La funció
home
és la funció de vista que es crida quan es visita la URL arrel. - La funció retorna un missatge de benvinguda.
- Utilitzem el decorador
-
Execució de l'Aplicació:
if __name__ == '__main__': app.run(debug=True)
- Executem l'aplicació en mode de depuració (
debug=True
), la qual cosa facilita la detecció d'errors durant el desenvolupament.
- Executem l'aplicació en mode de depuració (
Paràmetres en les Rutes
Flask permet definir rutes amb paràmetres, que poden ser passats a les funcions de vista.
Exemple de Codi amb Paràmetres
Explicació
- Ruta amb Paràmetre:
@app.route('/usuari/<nom>') def salutacio(nom): return f"Hola, {nom}!"
- La ruta
/usuari/<nom>
conté un paràmetrenom
. - La funció
salutacio
rep el paràmetrenom
i retorna un missatge personalitzat.
- La ruta
Tipus de Paràmetres
Flask permet especificar el tipus de paràmetre en les rutes.
Exemple de Codi amb Tipus de Paràmetres
@app.route('/article/<int:id>') def mostrar_article(id): return f"Estàs veient l'article amb ID: {id}"
Explicació
- Ruta amb Tipus de Paràmetre:
@app.route('/article/<int:id>') def mostrar_article(id): return f"Estàs veient l'article amb ID: {id}"
- La ruta
/article/<int:id>
especifica que el paràmetreid
ha de ser un enter (int
). - La funció
mostrar_article
rep el paràmetreid
i retorna un missatge amb l'ID de l'article.
- La ruta
Exercicis Pràctics
Exercici 1
Crea una ruta /producte/<nom>
que mostri un missatge amb el nom del producte.
Solució
Exercici 2
Crea una ruta /usuari/<int:id>
que mostri un missatge amb l'ID de l'usuari.
Solució
Errors Comuns i Consells
- Error 404: Si una ruta no està definida, Flask retornarà un error 404 (No Trobat). Assegura't que les rutes estan correctament definides.
- Tipus de Paràmetres: Si especifiques un tipus de paràmetre (com
int
) i la URL no compleix amb aquest tipus, Flask retornarà un error 404.
Resum
En aquesta secció, hem après com definir rutes en Flask utilitzant el decorador @app.route
. Hem vist com passar paràmetres a les rutes i com especificar el tipus de paràmetre. També hem practicat amb alguns exercicis per reforçar els conceptes apresos. En la següent secció, explorarem com gestionar els mètodes HTTP en Flask.
Curs de Desenvolupament Web amb Flask
Mòdul 1: Introducció a Flask
- Què és Flask?
- Configuració del Teu Entorn de Desenvolupament
- Creant la Teva Primera Aplicació Flask
- Entenent l'Estructura d'una Aplicació Flask
Mòdul 2: Conceptes Bàsics de Flask
- Enrutament i Mapeig d'URL
- Gestió de Mètodes HTTP
- Renderització de Plantilles amb Jinja2
- Treballant amb Fitxers Estàtics
Mòdul 3: Formularis i Entrada d'Usuari
Mòdul 4: Integració de Bases de Dades
- Introducció a Flask-SQLAlchemy
- Definició de Models
- Realització d'Operacions CRUD
- Migracions de Bases de Dades amb Flask-Migrate
Mòdul 5: Autenticació d'Usuaris
- Registre d'Usuaris
- Inici i Tancament de Sessió d'Usuaris
- Hashing de Contrasenyes
- Gestió de Sessions d'Usuaris
Mòdul 6: Conceptes Avançats de Flask
- Blueprints per a Aplicacions Grans
- Gestió d'Errors
- Pàgines d'Error Personalitzades
- Registre i Depuració
Mòdul 7: APIs RESTful amb Flask
- Introducció a les APIs RESTful
- Creació de Punts Finals RESTful
- Gestió de Dades JSON
- Autenticació per a APIs
Mòdul 8: Desplegament i Producció
- Configuració de Flask per a Producció
- Desplegament a Heroku
- Desplegament a AWS
- Monitorització i Optimització del Rendiment
Mòdul 9: Proves i Millors Pràctiques
- Proves Unitàries amb Flask
- Proves d'Integració
- Cobertura de Proves
- Millors Pràctiques per al Desenvolupament amb Flask